我知道这可能是一个愚蠢的问题,但我最难使用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”
任何帮助,将不胜感激。
我知道这可能是一个愚蠢的问题,但我最难使用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”
任何帮助,将不胜感激。
您正在使用hh
12 小时制时钟。您想HH
改用:
"yyyy-MM-dd'T'HH:mm:ss"
- hh - 上午/下午的小时 (1-12)
- HH - 一天中的小时 (0-23)
- kk - 一天中的小时 (1-24)
- KK - 上午/下午的小时 (0-11)
kk
(为什么他们将/的 12/24 小时颠倒了大写,KK
这超出了我的理解,但是整个 Java 日期/时间 API 都太疯狂了……)
此外,虽然看起来您目前还可以,但值得考虑时区方面。ADate
没有任何时区或日历的概念——它只是一个瞬间。SimpleDateFormat
确实有关联的时区和日历(和文化),因此请确保它们对于您的目的是正确的。
您必须使用HH
而不是hh
:
yyyy-MM-dd'T'HH:mm:ss
字母日期或时间组件演示示例
小时 (0-23) 数字 0
k 小时 (1-24) 数字 24
K 小时(上午/下午) (0-11) 数字 0
小时(上午/下午) (1-12) 第 12 号
Date
您可以在此处阅读更多信息。
包 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()));
}
}