如何从 `now` 获取格式化的日期和时间字符串?
How to get a formatted date and time string from `now`?
我在 Windows 上使用 "Red Programming Language" 版本“0.6.4”并制作命令行应用程序。
我不懂红语,很多东西我都不懂。我确实在 (https://doc.red-lang.org/en/) 上查看了 "work in progress" 文档,然后才在这里提问。
我需要获取格式为 yyyymmdd_hhmm
的日期和时间字符串。
我从这样的代码开始:
Red []
dt: to string! now/year
print dt
这给了我 2019
但我需要其他的月份、日期和时间来获得类似 20190608_2146
的东西
我也试过:
Red []
dt: to string! now/precise
print dt
这给了我 8-Jun-2019/21:47:51.299-07:00
但我再次需要的是 20190608_2147
问题:
如何修改上面的代码以从 now
?
获取类似 20190608_2147
的内容
谢谢。
我已经为 Rebol 和 Red 编写了一个名为 'Form Date' 的脚本,它将以与 STRFTIME 类似的方式格式化 dates/times。红色版本是 here.
do %form-date.red
probe form-date now "%Y%m%d_%H%M"
print first spec-of :form-date
脚本中包含单独的代码片段,用于格式化日期的各个组成部分!值。
虽然您不需要特定示例的脚本,但您可以提取并加入各种组件:
date: now
rejoin [ ; reduce-join
form date/year
pad/left/with date/month 2 #"0"
pad/left/with date/day 2 #"0"
"_"
pad/left/with date/hour 2 #"0"
pad/left/with date/minute 2 #"0"
]
由于上述解决方案在 Rebol2 下存在一些问题,这里有一个以相同方式与 Rebol 和 Red 一起使用的变体
date: now
rejoin [
date/year
next form 100 + date/month
next form 100 + date/day
"_"
next form 100 + date/time/hour
next form 100 + date/time/minute
]
这是另一种方式:
rejoin [
now/year
either 10 > x: (now/month) [join "0" x][x]
either 10 > x: (now/day) [join "0" x][x]
"_"
either 10 > x: first (now/time) [join "0" x][x]
either 10 > x: second (now/time) [join "0" x][x]
]
Red 有 pad
,所以 rgchris 的回答很好。然而,不需要像 rgchris 那样 date: now
:
rejoin [
now/year
pad/left/with now/month 2 #"0"
pad/left/with now/day 2 #"0"
"_"
pad/left/with first (now/time) 2 #"0"
pad/left/with second (now/time) 2 #"0"
]
我在 Windows 上使用 "Red Programming Language" 版本“0.6.4”并制作命令行应用程序。
我不懂红语,很多东西我都不懂。我确实在 (https://doc.red-lang.org/en/) 上查看了 "work in progress" 文档,然后才在这里提问。
我需要获取格式为 yyyymmdd_hhmm
的日期和时间字符串。
我从这样的代码开始:
Red []
dt: to string! now/year
print dt
这给了我 2019
但我需要其他的月份、日期和时间来获得类似 20190608_2146
我也试过:
Red []
dt: to string! now/precise
print dt
这给了我 8-Jun-2019/21:47:51.299-07:00
但我再次需要的是 20190608_2147
问题:
如何修改上面的代码以从 now
?
20190608_2147
的内容
谢谢。
我已经为 Rebol 和 Red 编写了一个名为 'Form Date' 的脚本,它将以与 STRFTIME 类似的方式格式化 dates/times。红色版本是 here.
do %form-date.red
probe form-date now "%Y%m%d_%H%M"
print first spec-of :form-date
脚本中包含单独的代码片段,用于格式化日期的各个组成部分!值。
虽然您不需要特定示例的脚本,但您可以提取并加入各种组件:
date: now
rejoin [ ; reduce-join
form date/year
pad/left/with date/month 2 #"0"
pad/left/with date/day 2 #"0"
"_"
pad/left/with date/hour 2 #"0"
pad/left/with date/minute 2 #"0"
]
由于上述解决方案在 Rebol2 下存在一些问题,这里有一个以相同方式与 Rebol 和 Red 一起使用的变体
date: now
rejoin [
date/year
next form 100 + date/month
next form 100 + date/day
"_"
next form 100 + date/time/hour
next form 100 + date/time/minute
]
这是另一种方式:
rejoin [
now/year
either 10 > x: (now/month) [join "0" x][x]
either 10 > x: (now/day) [join "0" x][x]
"_"
either 10 > x: first (now/time) [join "0" x][x]
either 10 > x: second (now/time) [join "0" x][x]
]
Red 有 pad
,所以 rgchris 的回答很好。然而,不需要像 rgchris 那样 date: now
:
rejoin [
now/year
pad/left/with now/month 2 #"0"
pad/left/with now/day 2 #"0"
"_"
pad/left/with first (now/time) 2 #"0"
pad/left/with second (now/time) 2 #"0"
]