如何2009-01-28T21:49:59.000Z在Lua 中将时间戳转换为ISO 8601格式(如)?
我特意尝试使用Nginx中的HttpLuaModule.
40,000,000秒是462.962天.如果我想将其表示为ISO-8601期间,请使用以下格式:
PnYnMnDTnHnMnS
Run Code Online (Sandbox Code Playgroud)
确定月份和年份的规则是什么?两者都不是精确的术语,标准表示它取决于期间的开始日期.
这是有道理的:它使得周期模糊而没有开始日期.是否有任何可接受的使用没有开始日期的期限的方法?
我在VARCHAR2类型中有ISO-8601日期,如何将该字符串日期转换为oracle db中的时间戳?
日期示例:"2014-09-12T11:53:06 + 00:00"
也许是以下类似但我不确定格式是什么.
SELECT to_timestamp_tz ('2014-09-12T11:53:06+00:00', ????) FROM DUAL
Run Code Online (Sandbox Code Playgroud) ISO 8601建议使用以下日期和时间格式:
2014-12-29T16:11:20+00:00
Run Code Online (Sandbox Code Playgroud)
我非常喜欢这种格式,因为它允许词汇排序.但是存在一个小问题:某些文件系统不允许文件名中的冒号(至少不是正常的).ISO 8601允许省略冒号,但我宁愿在那里有一些符号而不是数字一起运行:
2014-12-29T161120+0000
Run Code Online (Sandbox Code Playgroud)
ISO 8601是否允许冒号以外的符号?我找不到它的任何迹象.如果没有,是否还有其他公认的符号我可以使用?(或许另一个标准提出这样的符号?)
我对java 8日期格式/解析功能有点沮丧.我试图找到杰克逊配置并DateTimeFormatter解析 "2018-02-13T10:20:12.120+0000"字符串到任何Java 8日期,并没有找到它.
这是java.util.Date一个很好的例子:
Date date = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.SSSZZZ")
.parse("2018-02-13T10:20:12.120+0000");
Run Code Online (Sandbox Code Playgroud)
相同的格式不适用于新的日期时间api
ZonedDateTime dateTime = ZonedDateTime.parse("2018-02-13T10:20:12.120+0000",
DateTimeFormatter.ofPattern("yyyy-MM-dd'T'hh:mm:ss.SSSZZZ"));
Run Code Online (Sandbox Code Playgroud)
我们应该能够以适合FE UI应用程序的任何格式格式化/解析日期.也许我误解或错误的东西,但我认为java.util.Date提供更多的格式灵活性和更容易使用.
我需要将Windows PowerShell中的日期转换为ISO 8601格式.
在Linux/Unix中没问题
TZ=0 date -d "<random-format>" +%Y-%m-%dT%H:%M:%S.000Z
Run Code Online (Sandbox Code Playgroud)
现在我需要在Windows PowerShell中执行相同的操作.Windows上的输出格式是
Wednesday, 19. July 2017 01:06:13
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
我正在尝试使用Duration该类而不是long.它具有优越的文字语法.我喜欢它的灵活性,虽然它看起来很奇怪.
"PT10S"意味着10秒,接受"10秒"的问题是什么?!好的没关系.
我只是好奇为什么选择了PT前缀(不是"DU"例如)以及为什么任何前缀在这里更好而不是什么?
使用android和joda时间库 - 我试图转换用户的时区,以便稍后格式化为:2012-11-12T21:45:00 + 02:00.
DateTimeZone zone = DateTimeZone.forID( TimeZone.getDefault().getID());
Run Code Online (Sandbox Code Playgroud)
上面的代码失败了 - 任何人都知道如何把"欧洲/伦敦"(Timezone.getID)转换成偏移量,所以我可以把它换成ISO 8601格式?
我有以下格式的ISO 8601时间戳:
YYYY-MM-DDThh:mm:ss[.nnnnnnn][{+|-}hh:mm]
YYYY-MM-DDThh:mm:ss[{+|-}hh:mm]
Run Code Online (Sandbox Code Playgroud)
例子:
2013-07-03T02:16:03.000+01:00
2013-07-03T02:16:03+01:00
Run Code Online (Sandbox Code Playgroud)
如何将其解析为DateTime正确TimeZone提供的.NET Framework ?
这DateTime.TryParse不起作用,因为有关的尾随信息TimeZone.
来自ISO-8601:2004(E)规范:
4.2.2.4带小数部分的表示法
如果特定应用需要,可以包括小时,分钟或秒的小数部分.如果包含小数部分,则应省略低阶时间元素(如果有),小数部分应从整数部分除以ISO 31-0中指定的小数符号,即逗号[,]或句号[ ].其中,逗号是首选标志.
很简单.因此,根据此规范,优选使用逗号分隔整个和小数部分来写入一秒的分数,例如2014-01-01T00:00:00,123.然而,似乎几乎无处不在,只接受小数点(又名"完全停止")!
现在我确定有一些语言或库将这一点考虑在内,我知道在很多情况下你可以自己提供格式的全部细节.但这似乎是对规范的明显监督,似乎各种程序员都犯了同样的错误. 除了纯粹的人为错误之外,是否存在这种情况的原因?
以下是我测试的地方列表.如果您找到其他人,请随意编辑问题以扩充我的列表.谢谢.
DateTime dt = DateTime.Parse("2014-01-01T00:00:00,123");
Run Code Online (Sandbox Code Playgroud)
抛出一条FormatException消息"字符串未被识别为有效的DateTime".使用句点而不是逗号的相同内容会成功解析.
最新(在撰写本文时)Chrome,Internet Explorer,Firefox和Node.js进行了测试:
var dt = new Date('2014-01-01T00:00:00,123');
Run Code Online (Sandbox Code Playgroud)
退货"Invalid Date".使用句号代替工作正常.
var valid = moment("2014-01-01T00:00:00,123").isValid();
Run Code Online (Sandbox Code Playgroud)
退货false.使用句点代替返回true.
echo strtotime('2014-01-01T00:00:00,123');
Run Code Online (Sandbox Code Playgroud)
返回一个空字符串.使用句号代替工作正常.
require 'time'
puts Time.iso8601("2014-01-01T00:00:00,123")
Run Code Online (Sandbox Code Playgroud)
给出了运行时错误.虽然Time不保持小数秒,但它不应该出错 - 实际上如果使用句号,它就可以工作.