0

我知道这可能是一个愚蠢的问题,但我最难使用SimpleDateFormat. 我有一个当地的约会

“2013 年 7 月 18 日星期四 18:56:51 PDT”

我正在尝试将其直接转换为格式

“yyyy-MM-dd'T'hh:mm:ss”。

我希望字符串看起来像这样:

“2013-07-18T18:56:51”

我得到的是:

“2013-07-18T06:56:51”

任何帮助,将不胜感激。

4

4 回答 4

8

您正在使用hh12 小时制时钟。您想HH改用:

"yyyy-MM-dd'T'HH:mm:ss"

文档中SimpleDateFormat

  • hh - 上午/下午的小时 (1-12)
  • HH - 一天中的小时 (0-23)
  • kk - 一天中的小时 (1-24)
  • KK - 上午/下午的小时 (0-11)

kk(为什么他们将/的 12/24 小时颠倒了大写,KK这超出了我的理解,但是整个 Java 日期/时间 API 都太疯狂了……)

此外,虽然看起来您目前还可以,但值得考虑时区方面。ADate没有任何时区或日历的概念——它只是一个瞬间。SimpleDateFormat 确实有关联的时区和日历(和文化),因此请确保它们对于您的目的是正确的。

于 2013-07-18T20:13:42.490 回答
0

小时 (上午/下午) (1-12)

一天中的小时 (0-23 )

k 一天中的小时 (1-24)

上午/下午的K 小时 (0-11)

使用 HH

类 SimpleDateFormat 文档

于 2013-07-18T20:15:33.117 回答
0

您必须使用HH而不是hh

yyyy-MM-dd'T'HH:mm:ss

字母日期或时间组件演示示例

小时 (0-23) 数字 0

k 小时 (1-24) 数字 24

K 小时(上午/下午) (0-11) 数字 0

小时(上午/下午) (1-12) 第 12 号

Date 您可以在此处阅读更多信息。

于 2013-07-18T20:15:34.713 回答
0

包 com.stackoverflow.experiments;

导入 java.text.SimpleDateFormat;导入 java.util.Calendar;

公共类 SimpleDateFormatExperiment {

/**
 * 
 */
public SimpleDateFormatExperiment() {
    // TODO Auto-generated constructor stub
}

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub

    System.out.println(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss").format(Calendar.getInstance().getTime()));
}

}

于 2013-07-18T20:34:09.927 回答