java-SimpleDateFormat给出不一致的结果
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-SimpleDateFormat给出不一致的结果,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1385字,纯文字阅读大概需要2分钟。
内容图文
我试图解析一个日期,当我在本地/ BST中运行代码与在巴黎/ CEST中的服务器进行比较时,得到了不同的结果.
我在以下示例中重现了该问题.这是试图解析澳大利亚大奖赛的开始日期.
TimeZone tz = TimeZone.getTimeZone("AET");
DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH mm");
dateFormat.setTimeZone(tz);
long time = dateFormat.parse("28/03/2010 17 00").getTime();
System.out.println("Time "+time);
似乎我在日期格式上正确设置了时区,并且当前时区不会影响代码.但是在本地打印1269756000000,在巴黎打印1269759600000.
回答:
好像我在测试一个极端的情况:Mac上的时区定义与Linux服务器上的不同.如果我将时区更改为:“ America / Los_Angeles”,我将获得一致的结果.给我错误结果的linux框正在运行java 1.6.0-b105,它可能已过时.我会尝试升级
解决方法:
有趣.根据TimeZone文档:
Three-letter time zone IDs For
compatibility with JDK 1.1.x, some
other three-letter time zone IDs (such
as “PST”, “CTT”, “AST”) are also
supported. However, their use is
deprecated because the same
abbreviation is often used for
multiple time zones (for example,
“CST” could be U.S. “Central Standard
Time” and “China Standard Time”), and
the Java platform can then only
recognize one of them.
如果使用“ Australia / Melbourne”而不是“ AET”,则看到结果会很有趣,但是从我所做的一个快速实验来看,似乎没有什么不同.
奇怪的是,结果相隔一个小时,就像其中一种情况没有考虑夏令时.愚蠢的问题;如果您在两台不同的计算机上运行,??是否确定每台计算机的时间设置正确?
内容总结
以上是互联网集市为您收集整理的java-SimpleDateFormat给出不一致的结果全部内容,希望文章能够帮你解决java-SimpleDateFormat给出不一致的结果所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。