2016-02-04 152 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"); 
相关问题