Chr*_*ley 21 ruby datetime iso8601
该Time.iso8601
方法是ISO-8601的受限子集.
看起来没有一个类可以处理所有各种8601日期和日期/时间组合.但是,我设法通过使用Date.parse
和Time.iso8601
方法解决问题.缺点是你需要在代码中决定输入是看起来像日期还是日期/时间.
Time.iso8601
并且Time.parse
行为不同.
>> Time.parse("2010-09-06T12:27:00.10-05:00")
=> Mon Sep 06 18:27:00 +0100 2010
>> Time.iso8601("2010-09-06T12:27:00.10-05:00")
=> Mon Sep 06 17:27:00 UTC 2010
Run Code Online (Sandbox Code Playgroud)
本文档涉及ISO-8601中的内容与Ruby支持的内容之间的差异.简短的回答是可能的格式数量受到限制.
mol*_*olf 17
是的,但不幸的是它在Ruby 1.9中.
require "date"
Date.iso8601("2010-W32-5").strftime
#=> "2010-08-13"
Run Code Online (Sandbox Code Playgroud)
我不相信Ruby 1.8.7有任何实现(或者至少我找不到).您可以尝试升级到Ruby 1.9,从1.9.2开始它非常稳定.或者,您可以尝试自己解析日期.
小智 10
要将ISO8601日期转换为本地时区,请执行以下操作:
dt1 = Time.parse("2010-09-06T12:27:00.10-05:00")
Run Code Online (Sandbox Code Playgroud)
要将ISO8601日期转换为UTC,请执行以下操作:
dt2 = Time.iso8601("2010-09-06T12:27:00.10-05:00")
Run Code Online (Sandbox Code Playgroud)
如果比较上述查询返回的日期,它们将是相同的(即dt1 === dt2).但是,访问日期组件(如年,月,日,小时等)将返回适合时区的值(UTC或本地).这同样适用于strftime.
归档时间: |
|
查看次数: |
12478 次 |
最近记录: |