我进行下一步操作:
将设备上的时区设置为GMT + 0400(不是来自代码)
创建新日期
打印时间(SimpleDateFormat) - 以毫秒为单位
GOT 11-19 19:16:40.920:I / System.out(30070):测试时间:1353330825273时间:19.11
当我在设备上更改时区时,GMT + 0600 现在用毫秒创建日期1353330825273
日期myDate =新日期(1353330825273L);
但是当我再次打印时,我得到了 11-19 19:17:00.920:I / System.out(30070):测试时间:1353330825273时间:21.11
时间格式字符串是:k:mm
为什么呢?如何禁用timeZone修改我的时间?
答案 0 :(得分:5)
它与格式有关,而不是与时区有关,但如果您想要禁用时区,请执行以下操作:
SimpleDateFormat sdf = new SimpleDateFormat(format);
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
return sdf.format(date);
这会将您的时区设置为GMT / UTC
答案 1 :(得分:1)
请参阅SimpleDateFormat的javadoc中的示例部分以获取更多详细信息:
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss a");
以上将为您提供12小时格式的输出。以下是各种格式的详细列表:
答案 2 :(得分:0)
我认为时间格式不是时区问题。使用K
显示上午/下午的小时数,a
显示上午/下午标记。
SimpleDateFormat sdf = new SimpleDateFormat("KK:mm:ss a");