Tha*_*ham 4 java timezone date
我住在北卡罗来纳州,顺便说一句,这是在东边.所以我编译并运行这段代码并打印出同样的东西.文档说java.util.date尝试反映UTC时间.
Date utcTime = new Date();
Date estTime = new Date(utcTime.getTime() + TimeZone.getTimeZone("ET").getRawOffset());
DateFormat format = new SimpleDateFormat("dd/MM/yy h:mm a");
System.out.println("UTC: " + format.format(utcTime));
System.out.println("ET: " + format.format(estTime));
Run Code Online (Sandbox Code Playgroud)
这就是我得到的
UTC: 11/05/11 11:14 AM
ET: 11/05/11 11:14 AM
Run Code Online (Sandbox Code Playgroud)
但是,如果我去这个网站它试图反映所有不同的时间,UTC和ET是不同的.我在这里做错了什么
那是因为getRawOffset()返回0 - 它也为我做"ET",实际上TimeZone.getTimeZone("ET")基本上返回GMT.我怀疑那不是你的意思.
我相信北卡罗来纳州最好的奥尔森时区名称是"America/New_York".
请注意,您不应该只将时区的原始偏移量添加到UTC时间 - 您应该设置格式化程序的时区.一个Date值并不真正了解时区......自1970年1月1日UTC以来,它总是只有几毫秒.
所以你可以使用:
import java.text.; import java.util.;
Date date = new Date();
DateFormat format = new SimpleDateFormat("dd/MM/yy h:mm a zzz");
format.setTimeZone(TimeZone.getTimeZone("America/New_York"));
System.out.println("Eastern: " + format.format(date));
format.setTimeZone(TimeZone.getTimeZone("Etc/UTC"));
System.out.println("UTC: " + format.format(date));
Run Code Online (Sandbox Code Playgroud)
输出:
Eastern: 11/05/11 11:30 AM EDT
UTC: 11/05/11 3:30 PM UTC
Run Code Online (Sandbox Code Playgroud)
我还建议您考虑使用Joda Time而不是内置库 - 它是一个更好的API.
| 归档时间: |
|
| 查看次数: |
3557 次 |
| 最近记录: |