0
String = 26/8/2013 15:59;

我想将此日期转换为 GMT,但是在应用以下代码后,我得到的是 EEST 时间而不是 GMT。

DateFormat df = new SimpleDateFormat("dd/MM/yyyy h:m");
df.setTimeZone(TimeZone.getTimeZone("UTC"));
df.parse(newDate);
Log.i(tag, df.parse(newDate).toString());

输出 :

Mon Aug 26 18:59:00 EEST 2013

怎么了 ?

4

3 回答 3

2

您的解析是正确的,不同之处仅在于您在制作 toString() 时用于显示的语言环境时区。我只是使用格式化输出来演示正确的格式。以下是详细示例:

final String time = "26/8/2013 15:59";
TimeZone timeZone = TimeZone.getTimeZone("UTC");
final String REQUEST_DATE_FORMAT = "dd/MM/yyyy h:m";

DateFormat format = new SimpleDateFormat(REQUEST_DATE_FORMAT);
Date localDate = format.parse(time);

// localDate.toString()
// PRINT. Mon Aug 26 15:59:00 EEST 2013

Calendar cal = Calendar.getInstance(timeZone);
cal.setTime(localDate);

format.setTimeZone(timeZone);
final String utcTime = format.format(cal.getTime());
// PRINT. 26/08/2013 12:59
于 2013-08-26T13:27:22.373 回答
0

没有什么是真的错了。您正在成功解析解释为 UTC 时区的日期时间字符串。

将其打印到日志时,您会得到您所要求的 -Date.toString()返回格式化为当前区域设置(包括时区)的日期。UTC 和 EEST 之间的差异是 3 小时。

如果要对其进行格式化以显示其他时区,请将其传递给配置为所需时区format()的 a 。SimpleDateFormat

于 2013-08-26T13:22:32.910 回答
0

我认为您应该使用以下方法: Date myDate = new Date();

Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(TimeZone.getTimeZone("UTC"));
calendar.setTime(myDate);
Date time = calendar.getTime();
SimpleDateFormat outputFmt = new SimpleDateFormat("MMM dd, yyy h:mm a zz");
String dateAsString = outputFmt.format(time);
System.out.println(dateAsString);
于 2015-05-19T18:22:58.030 回答