[英]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.