我正在花费当前时间,并希望将其转换为GMT +00:00/UTC
。Date dt = Calendar.getInstance().getTime();
SimpleDateFormat out = new SimpleDateFormat("EEE, MMM d yyyy hh:mm:ss z");
out.setTimeZone(TimeZone.getTimeZone("UTC"));
String current = dt.toString();
String result = out.format(dt);
current = Tue Dec 24 17:35:59 GMT+04:00 2013
我得到的结果是: result = Tue, Dec 24 2013 01:35:59 UTC
是不是错了?我应该Tue, Dec 24 2013 13:35:59 UTC
对吗?
在 SimpleDateFormat 模式中使用大写字母"H"以您想要的格式获取一天中的小时。喜欢这个:
SimpleDateFormat out = new SimpleDateFormat("EEE, MMM d yyyy HH:mm:ss z");
小"h"代表一天中的一小时,以 PM/AM 形式 (0 - 12)
使用 kk . DateFormat.format("yyyy-MM-dd kk:mm:ss", d.getTime());
这可能会解决您的问题
您应该使用的日期格式是
"EEE, MMM d yyyy HH:mm:ss z"而不是
"EEE, MMM d yyyy hh:mm:ss z"小时
位置的情况在 12 小时和 24 小时格式之间变化。
Joda-Time 使这项工作变得更容易。
DateTime now = new DateTime( DateTimeZone.UTC );
System.out.println( now );
假设只有外部表示是感兴趣的。以下内容对我有用,事不宜迟。它基于 java.util.Calendar 对象和 java.util.Formatter。
日历对象的行为似乎类似于具有不同时区而不是默认时区的日期对象,并且被格式化程序接受以代替日期。
测试代码为:
Calendar cl = Calendar.getInstance();
cl.setTimeInMillis(System.currentTimeMillis());
System.out.println("cl="+String.format(
"%1$ta, %1$td %1$tb %1$tY %1$tT %1$tZ", cl));
cl.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println("cl="+String.format(Locale.ENGLISH,
"%1$ta, %1$td %1$tb %1$tY %1$tT %1$tZ", cl));
结果是:
cl=Mi, 06 Feb 2019 13:51:41 MEZ
cl=Wed, 06 Feb 2019 12:51:41 GMT