[英]Why should I not use abbreviations in Java TimeZone
核心问题:“ GMT” TimeZone返回所需的内容。 “ etc / GMT”返回不需要的附加“ +0:00”。 “ etc / Greenwich”似乎使人们误以为它指的是特定位置,这是不希望的。
那么,为什么不习惯使用“ GMT”呢?
原始帖子
根据Java文档
请注意,缩写的支持仅出于JDK 1.1.x兼容性的考虑,应使用全名。
我试图使用它,所以我去了“ etc / GMT”,但是当我使用输出时,看起来像...
但我不要多余的+0.00。 如果使用缩写,则不会显示+0.00,而etc / Greenwich也不会。 这两个选项似乎都是不好的,因为给定文档(GMT)时,一个明显是错误的,而另一个对于位置(etc / greenwich)太具体了。 修整+0.00的另一种选择似乎也不是一个好的解决方案。
为什么不再支持缩写?如果我不希望+0.00,可以使用什么正确的TimeZone?
使用Java 1.7.51(也包括Groovy代码)
添加代码
private String formatET(Date etDate){
StringBuilder sb = new StringBuilder();
SimpleDateFormat etFormat = new SimpleDateFormat("dd-MMM-yyy kk:mm zzz")
TimeZone etTimeZone = TimeZone.getTimeZone("America/New_York")
etFormat.setTimeZone(etTimeZone)
sb.append(etFormat.format(etDate))
TimeZone gmtTimeZone = TimeZone.getTimeZone("etc/GMT")
SimpleDateFormat gmtFormat = new SimpleDateFormat("kk:mm zzz")
gmtFormat.setTimeZone(gmtTimeZone)
sb.append(" (${gmtFormat.format(etDate)})")
sb.toString();
}
这将返回以下内容...
2014年8月11日11:48 EDT(15:48 GMT + 00:00)
我试图将其添加到此...
import java.text.SimpleDateFormat;
import java.util.*;
public class HelloWorld{
public static void main(String []args){
Date d = new Date();
SimpleDateFormat etFormat = new SimpleDateFormat("dd-MMM-yyy kk:mm zzz");
TimeZone etTimeZone = TimeZone.getTimeZone("etc/GMT");
etFormat.setTimeZone(etTimeZone);
System.out.println(etFormat.format(d));
}
}
放到这里...
http://www.compileonline.com/compile_java_online.php
它就像我想要的那样工作。 当我回到本地使用
Java版本“ 1.7.0_51” Java™SE运行时环境(内部版本1.7.0_51-b13)Java HotSpot(TM)64位服务器VM(内部版本24.51-b03,混合模式)
我懂了...
2014年8月19日15:53 GMT + 00:00
不建议使用缩写,因为它们不是唯一的。 例如,EST表示美国和澳大利亚东部的东部标准时间。
在您的情况下,您应该使用与GMT等效的时区之一:
ETC / GMT
ETC / UTC
ETC /通用
请注意,这些不是缩写。 这些是全名。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.