我有解析日期的代码如下:
String ALT_DATE_TIME_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSSZ";
SimpleDateFormat sdf = new SimpleDateFormat(
ALT_DATE_TIME_FORMAT);
Date date = sdf.parse(requiredTimeStamp);
Run Code Online (Sandbox Code Playgroud)
它工作正常,突然,这停止了工作.事实证明,管理员在服务器上进行了一些配置更改,并且当前正在返回日期为"2010-12-27T10:50:44.000-08:00",这是上述模式无法解析的.我有两个问题:
第一个是什么模式将以上述格式解析JVM返回的日期(具体来说,只是'-08:00'作为时区)?第二,在Linux RHEL 5服务器上究竟会改变这样的设置,以便我们在将来意识到这些变化?
如何使用JavaScript转换持续时间,例如:
PT16H30M
如何使用ISO 8601表达500毫秒的持续时间?对我来说,文档并非100%明确.它只是"PT0.5S"吗?
我有一个日期字符串
String s = "2014-09-01T19:22:43.000Z";
Date date = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ").parse(s);
Run Code Online (Sandbox Code Playgroud)
但我得到一个例外:
Exception in thread "main" java.text.ParseException: Unparseable date: "2014-09-01T19:22:43.000Z"
Run Code Online (Sandbox Code Playgroud)
如何将上面的字符串转换为unix时间戳?谢谢
在 Javascript 中,Date.prototype.toISOString给出 ISO 8601 UTC 日期时间字符串:
new Date().toISOString()
// "2014-07-24T00:19:37.439Z"
Run Code Online (Sandbox Code Playgroud)
是否存在行为与 Javascript 相匹配的 Python 函数?
尝试:
Python 的datetime.datetime.isoformat类似,但不完全相同:
datetime.datetime.now().isoformat()
// '2014-07-24T00:19:37.439728'
Run Code Online (Sandbox Code Playgroud)
使用pytzI 至少可以使 UTC 明确:
pytz.utc.localize(datetime.now()).isoformat())
// '2014-07-24T00:19:37.439728+00:00'
Run Code Online (Sandbox Code Playgroud) 为什么JDK8 DateTime库似乎无法解析有效的iso8601日期时间strings?它在时区偏移上窒息,表示为"+01"而不是"+01:00"
这有效:
java.time.ZonedDateTime.parse("2015-08-18T00:00+01:00")
Run Code Online (Sandbox Code Playgroud)
这会抛出一个解析异常:
java.time.ZonedDateTime.parse("2015-08-18T00:00+01")
Run Code Online (Sandbox Code Playgroud)
来自iso8601维基百科页面:
与UTC的偏移量以与"Z"相同的方式附加到时间,格式为±[hh]:[mm],±[hh] [mm]或±[hh].因此,如果描述的时间比UTC早一个小时(例如冬季柏林的时间),则区域指示符将为"+01:00","+ 0100"或简称为"+01".
编辑:这看起来像JDK中的实际合法错误.
https://bugs.openjdk.java.net/browse/JDK-8032051
哇,经过多年测试新的日期时间后,我认为他们会发现一些如此明显的东西.我还认为JDK作者类型非常严格,可以使用更好的自动化测试套件.
更新:这在当前的jdk-9版本中完全修复.我刚刚确认了.上面显示的完全相同的解析命令在当前的jdk-8构建中失败,并且在jdk-9中完美地工作.
附录:FWIW,基于ISO-8601的RFC 3339,不允许这个简写.您必须在时区偏移中指定分钟.
在使用改造并尝试读取这样的日期时,我无法正确设置日期格式:
2015-08-29T11:22:09.815479Z
Run Code Online (Sandbox Code Playgroud)
我设置的GSON转换器是这样的:
GsonConverter gsonConverter = new GsonConverter(
new GsonBuilder()
.setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSz")
.create()
);
Run Code Online (Sandbox Code Playgroud)
什么问题的线索?
我有两个相关的问题.
假设在BST中运行的程序以UTC格式生成当前时间的日期时间值YYYY-MM-DDTHH:MM:SS.SSSZ格式
同时假设伦敦当前时间是2016-06-01 12:33:54
1)如果程序给出的当前时间是2016-06-01T11:33:54.000Z,程序错了吗?
2)如何在YYYY-MM-DDTHH的相应时间格式中记录BST的夏季偏移:MM:SS.SSSZ
我假设YYYY-MM-DDTHH:MM:SS + 0001我是否正确?
我意识到 JSON 没有真正的日期格式,考虑到 JavaScript 使用的是 ISO 8601,因此使用 ISO 8601 是一个不错的选择。持续时间呢?JavaScript 没有内置格式。
P3Y6M4DT12H30M5S我在野外没有看到太多使用。它看起来也非常冗长且难以阅读。据我所知,如果您需要,它也不支持毫秒。TimeSpan类型输出1.02:03:04.0050000为 1 天、2 小时、3 分钟、4 秒和 5 毫秒。我几乎从未见过野外的第一种格式。第二个对我来说似乎更直观,但我担心它在 .NET 之外并不为人所知。第三种格式可能是最跨平台友好的,但完全不是人类可读的。
我有一个SystemTime变量,我想从那个日期获得 ISO 8601 格式。