Bol*_*olo 26 ruby date-formatting
我想用这种格式返回日期
2015-10-07T00:32:50.877 + 0000
我测试过了
Time.now.iso8601
=> "2015-10-21T09:47:50-04:00"
Run Code Online (Sandbox Code Playgroud)
但我没有相同的格式
TKS
dav*_*rac 30
您可以使用自己的strftime,创建一个要描述的格式在这里
您指定的格式应该是 %Y-%m-%dT%H:%M:%S.%L%z
所以完整的Ruby语句就是这样 Time.now.strftime('%Y-%m-%dT%H:%M:%S.%L%z')
各种ISO 8601格式:
%Y%m%d => 20071119 Calendar date (basic)
%F => 2007-11-19 Calendar date (extended)
%Y-%m => 2007-11 Calendar date, reduced accuracy, specific month
%Y => 2007 Calendar date, reduced accuracy, specific year
%C => 20 Calendar date, reduced accuracy, specific century
%Y%j => 2007323 Ordinal date (basic)
%Y-%j => 2007-323 Ordinal date (extended)
%GW%V%u => 2007W471 Week date (basic)
%G-W%V-%u => 2007-W47-1 Week date (extended)
%GW%V => 2007W47 Week date, reduced accuracy, specific week (basic)
%G-W%V => 2007-W47 Week date, reduced accuracy, specific week (extended)
%H%M%S => 083748 Local time (basic)
%T => 08:37:48 Local time (extended)
%H%M => 0837 Local time, reduced accuracy, specific minute (basic)
%H:%M => 08:37 Local time, reduced accuracy, specific minute (extended)
%H => 08 Local time, reduced accuracy, specific hour
%H%M%S,%L => 083748,000 Local time with decimal fraction, comma as decimal sign (basic)
%T,%L => 08:37:48,000 Local time with decimal fraction, comma as decimal sign (extended)
%H%M%S.%L => 083748.000 Local time with decimal fraction, full stop as decimal sign (basic)
%T.%L => 08:37:48.000 Local time with decimal fraction, full stop as decimal sign (extended)
%H%M%S%z => 083748-0600 Local time and the difference from UTC (basic)
%T%:z => 08:37:48-06:00 Local time and the difference from UTC (extended)
%Y%m%dT%H%M%S%z => 20071119T083748-0600 Date and time of day for calendar date (basic)
%FT%T%:z => 2007-11-19T08:37:48-06:00 Date and time of day for calendar date (extended)
%Y%jT%H%M%S%z => 2007323T083748-0600 Date and time of day for ordinal date (basic)
%Y-%jT%T%:z => 2007-323T08:37:48-06:00 Date and time of day for ordinal date (extended)
%GW%V%uT%H%M%S%z => 2007W471T083748-0600 Date and time of day for week date (basic)
%G-W%V-%uT%T%:z => 2007-W47-1T08:37:48-06:00 Date and time of day for week date (extended)
%Y%m%dT%H%M => 20071119T0837 Calendar date and local time (basic)
%FT%R => 2007-11-19T08:37 Calendar date and local time (extended)
%Y%jT%H%MZ => 2007323T0837Z Ordinal date and UTC of day (basic)
%Y-%jT%RZ => 2007-323T08:37Z Ordinal date and UTC of day (extended)
%GW%V%uT%H%M%z => 2007W471T0837-0600 Week date and local time and difference from UTC (basic)
%G-W%V-%uT%R%:z => 2007-W47-1T08:37-06:00 Week date and local time and difference from UTC (extended)
Run Code Online (Sandbox Code Playgroud)
ada*_*amc 18
如果您只想包含小数秒,可以使用DateTime#iso8601([n = 0])→string:
pry(main)> require 'date'
pry(main)> DateTime.now.iso8601(3)
=> "2017-01-17T12:31:26.695+11:00"
Run Code Online (Sandbox Code Playgroud)
Gus*_*uss 12
似乎主要问题是您希望输出是 UTC 编码的 ISO 8601 时间戳,而 Ruby 默认使用Time值的时区- 这很可能,特别是如果您使用Time.now本地时区创建值。
解决方案是Time使用以下#utc方法将值转换为 UTC 时区:
now = Time.now
# convert to UTC and format
puts now.utc.iso8601
Run Code Online (Sandbox Code Playgroud)
这将输出2020-04-20T20:46:31Z-Z相当于+00:00并表示 UTC(或美国军事术语中的“祖鲁时间”)。任何符合 ISO-8601 的实现都应该接受Z与+00:00.
在iso8601对方法Time的实例是一个扩展。它是标准库的一部分,但您必须使用require 'time'. 这还会为Time该类加载其他有用的扩展。
小智 7
你试过日期吗?
Date.new(2018,5,25).iso8601 # returns "2018-05-25"
Run Code Online (Sandbox Code Playgroud)
今天,它将是:
Date.today.iso8601
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24976 次 |
| 最近记录: |