0

我进行下一个操作:

将设备上的时区设置为 GMT+0400(不是来自代码)

创建新日期

和打印时间 (SimpleDateFormat) - 以毫秒为单位

得到 11-19 19:16:40.920: I/System.out(30070): TEST TIME:1353330825273 TIME:19.11

当我在设备上更改我的 timeZone 到 GMT+0600 并且现在用毫秒创建日期 1353330825273

日期 myDate=新日期(1353330825273L);

但是当我再次打印时间时,我得到了 11-19 19:17:00.920: I/System.out(30070): TEST TIME:1353330825273 TIME:21.11

时间格式字符串为:k:mm

为什么?如何禁用时区修改我的时间?

4

3 回答 3

5

它与格式有关,而不是时区,但如果您想禁用时区,请执行以下操作:

SimpleDateFormat sdf = new SimpleDateFormat(format);
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
return sdf.format(date);

这会将您的时区设置为 GMT/UTC

于 2012-11-19T12:39:23.527 回答
1

有关详细信息,请参阅SimpleDateFormat的javadoc 中的示例部分:

SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss a");

以上将为您提供 12 小时格式的输出。以下是各种格式的详细列表:

在此处输入图像描述

于 2012-11-19T12:44:42.487 回答
0

我认为您的时间格式不是时区有问题。用于K以上午/下午显示小时数并a显示上午/下午标记。

SimpleDateFormat sdf = new SimpleDateFormat("KK:mm:ss a");
于 2012-11-19T12:41:52.703 回答