我在Windows上使用“红色编程语言”版本“ 0.6.4”,并制作了命令行应用程序。
我不太懂红色语言,也不了解许多事情。在问到这里之前,我确实浏览了(https://doc.red-lang.org/en/)上的“进行中”文档。
我需要获取格式为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
问题:
如何修改上面的代码以从20190608_2147
获得类似now
的内容?
谢谢。
答案 0 :(得分:3)
我已经为Rebol和Red编写了一个名为“ Form Date”的脚本,它将以类似于STRFTIME的方式格式化日期/时间。红色版本是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"
]
答案 1 :(得分:2)
由于上述解决方案在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
]
答案 2 :(得分:-3)
这是另一种方式:
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]
]
红色有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"
]