需求:我想从new Date()中只获得TimeZone字段,截至目前,从new Date(),我得到的结果
Wed Jul 23 19:37:20 GMT+05:30 2014,但我只想要GMT+05:30,有没有办法只得到这个?
PS:我不想使用split来获取时区字段。因为这是我实现上述要求的最后选择。
您应该使用Calendar
类,并且可能使用GregorianCalendar
实现。许多Date
函数已被弃用,而改用Calendar
。Java 8有Clock
API,但我在这里假设是Java 7。
这样你就可以这样做:
Calendar calendar = new GregorianCalendar();
TimeZone tz = calendar.getTimeZone();
从这里开始。
假设您必须使用String
输入,您可以这样做:
// format : dow mon dd hh:mm:ss zzz yyyy
String date = "Wed Jul 23 19:37:20 GMT+05:30 2014";
Pattern pattern = Pattern
.compile("^\w{3}\s\w{3}\s\d{2}\s\d{2}:\d{2}:\d{2}\s?(.*)\s\d{4}$");
Matcher matcher = pattern.matcher(date);
if (matcher.matches()) {
String timezone = matcher.group(1);
// beware : according to the Date.toString() documentation the timezone
// value can be empty
System.out.println(timezone);
} else {
System.out.println("doesn't match!");
}
import java。util package并使用GregorianCalendar方法。
int second, minute, hour;
GregorianCalendar date = new GregorianCalendar();
second = date.get(Calendar.SECOND);
minute = date.get(Calendar.MINUTE);
hour = date.get(Calendar.HOUR);
System.out.println("Current time is "+hour+" : "+minute+" : "+second);
不要使用java的Date and Time类。
生成带有偏移量但没有日期和时间的字符串
你的问题不准确。java.util.Date没有时区(假设总是使用UTC)。JVM的时区应用于对象的toString
方法和其他生成String表示的格式化代码中。这就是你的解决方案:使用一个日期-时间格式化程序,它生成一个只包含UTC的偏移量的字符串,而不包含日期或时间部分。
避免使用java.util.Date
&.Calendar
h1> 免使用捆绑的java.util.Date和. calendar类,因为它们非常麻烦。相反,可以使用java - time或新的java。包的时间。两者都支持时区作为日期-时间对象的一部分。
<标题> Joda-Time h1> 面是如何在Joda-Time 2.3中生成DateTime的String表示。
DateTime dateTime = new DateTime( DateTimeZone.forID( "Asia/Kolkata" ) );
DateTimeFormatter formatter = DateTimeFormat.forPattern( "ZZ" );
String offset = formatter.print( dateTime ); // generates: +05:30
DateTime dateTime = new DateTime( DateTimeZone.forID( "Asia/Kolkata" ) );
DateTimeFormatter formatter = DateTimeFormat.forPattern( "ZZ" );
String offset = formatter.print( dateTime ); // generates: +05:30
在Joda-Time 2.3中,您可以将DateTime对象作为对象询问其分配的时区。然后,您可以查询DateTimeZone对象。
DateTime dateTime = new DateTime( DateTimeZone.forID( "Asia/Kolkata" ) );
DateTimeZone timeZone = dateTime.getZone();
String id = timeZone.getID();
标题>