我正在从api接收一个字符串形式的日期,格式如下: ".expires": "Tue, 28 Apr 2015 06:17:40 GMT"
现在我想把它传给一个 Date
java中的变量:
public static Date getExpireDate(String date) {
if (date != null || (date.length() == 0)) {
//Date is not null or empty so continue
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date dateNew = sdf.parse(date);
return dateNew;
}catch(Exception e){}
}
// return default timeout
}
现在我找到了以下文档:
它有一个simelar示例,它呈现如下模式: EEE, d MMM yyyy HH:mm:ss Z
但是我的时区说 GMT
. 不是 GMT -08
什么模式将解析这个字符串?
2条答案
按热度按时间rggaifut1#
这应该起作用:
小写字母“z”表示
General time zone
威奇是Pacific Standard Time
或者PST
或者GMT-08:00
laik7k3q2#
热释光;博士
什么模式将解析这个字符串?
DateTimeFormatter.RFC_1123_DATE_TIME
我从api收到一个字符串形式的日期,格式如下:“.expires”:“周二,2015年4月28日06:17:40 gmt”只使用java.time类。
2015-04-28 06:17:40z
你可以看到同一时刻被调整成一个时区。
请在ideone.com上查看此代码的实时运行。
2015-04-27t22:17:40-08:00[美国/安克雷奇]
gmt-08?
不知道你的意思。
GMT
基本上是说从utc偏移0小时分秒的老方法。因此,您的输出没有理由比utc晚8小时(GMT -08
). 你可能会对以下事实感到困惑java.util.Date::toString
撒谎,动态应用jvm当前的默认时区,从而在虚拟机中创建时区的假象Date
. 从不使用这些遗留日期时间类的原因之一。rfc 1123/rfc 822
输入字符串
Tue, 28 Apr 2015 06:17:40 GMT
符合rfc 1123(改编自rfc 822)。这种格式现在已经过时了。iso 8601标准
现代协议采用iso8601标准格式来表示文本的日期时间值。
java.time文件
虽然java中内置的java.time类在解析/生成字符串时默认使用ISO8601格式,但是
DateTimeFormatter
类携带此旧格式的预定义格式化程序:DateTimeFormatter.RFC_1123_DATE_TIME
.请在ideone.com上查看此代码的实时运行。
时间:2015-04-28t06:17:40z