字符串 : fc03bb56-6c12-48fb-b47e-4c266fe57c43
的确奇芭:
[23] pry(main)> Date.parse("heh")
ArgumentError: invalid date
from (pry):23:in `parse'
[25] pry(main)> Date.parse(" fc03bb56-6c12-48fb-b47e-4c266fe57c43")
=> Thu, 03 Jan 2019
[28] pry(main)> Date.parse("fc03bb56-6c12-48fb-b47e-4c266fe57c45")
=> Thu, 03 Jan 2019
[29] pry(main)> Date.parse("ac03bb56-6c12-48fb-b47e-4c266fe57c45")
=> Thu, 03 Jan 2019
[30] pry(main)> Date.parse("a-b-c-d-e")
ArgumentError: invalid date
from (pry):29:in `parse'
[33] pry(main)> Date.parse("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee")
ArgumentError: invalid date
from (pry):32:in `parse'
因为 UUID type 1 里包含时间戳信息了,于是乎就可以从中提取时间信息。
比如刚随便找了个网上的 demo
刚搜了下,其实也有人问的 https://stackoverflow.com/questions/43751943/how-to-convert-timeuuid-to-timestamp-in-ruby
另外 Ruby 的 SecureRandom.uuid 是 type 4,是不包含时间信息的
Date.parse(str)
是单纯的去尝试解析 str
符合某种日期的格式吧,比如"fc03bb56-6c12-48fb-b47e-4c266fe57c43"
中的 "03"
被当成了 3 号。其他的:
[1] pry(main)> Date.parse 'fc03bb56-6c12-48fb-b47e-4c266fe57c43'
=> Thu, 03 Jan 2019
[2] pry(main)> Date.parse 'fc05bb56-6c12-48fb-b47e-4c266fe57c43'
=> Sat, 05 Jan 2019
[3] pry(main)> Date.parse 'fc05baug-0000-48fb-b47e-4c266fe57c43'
=> Thu, 05 Aug 0000
[4] pry(main)> Date.parse 'fc05bsep-0000-48fb-b47e-4c266fe57c43'
=> Sun, 05 Sep 0000