2016-02-04 267 views
2

這聽起來像一個簡單的問題,但我GOOGLE了很多,還沒有找到答案。基本上我有一個日期時間字符串,格式爲「2013-08-15T13:00:00-07:00」。我想從它得到時區。我怎樣才能做到這一點?謝謝!如何從日期時間獲得時區字符串

+0

你想要哪種格式?抵消?顯示名稱?三字母代碼? –

回答

-1

2013-08-15T13:00:00-07:00

最後-7:00表示GMT-7 也就是說MST(山地標準時間)

那時區是在美國使用和加拿大

+0

該答案的哪一部分描述瞭如何在Java中以編程方式獲取時區? – Andreas

0

您可以使用正則表達式。下面假設XML dateTime語法:

String input = "2013-08-15T13:00:00-07:00"; 
Matcher m = Pattern.compile("(?:[+-]\\d{2}:\\d{2}|Z)$").matcher(input); 
if (m.find()) 
    System.out.println("Time zone: " + m.group()); 
else 
    System.out.println("No time zone found"); 
1

你可以花時間從安德烈亞斯回答偏移,並使用下面sinppet獲得TimeZone對象。

TimeZone tmzo = TimeZone.getTimeZone("GMT"+offset); 
System.out.println(tmzo.getID()); 
1

如果Java的8,您可以直接與ISO_ZONED_DATE_TIME格式

String input = "2013-08-15T13:00:00-07:00";        
ZonedDateTime zDateTime = ZonedDateTime.parse(input, DateTimeFormatter.ISO_ZONED_DATE_TIME);    
ZoneId zone = zDateTime.getZone(); 
0

在Java 7中,可以有和沒有TZ分析和比計算偏移量,以你目前的TZ偏移考慮解析。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX"); 
Date withTZ = sdf.parse("2013-08-15T13:00:00-07:00"); 

SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); 
Date noTZ = sdf2.parse("2013-08-15T13:00:00-07:00"); 
相關問題