我想获取给定日期的最后一个星期一日期。例如,如果我的输入是 190113
,我希望输出为上周一的 190107
。
if {$current_date == "Mon"} {
set startday [clock seconds]
set startday [clock format $startday -format %y%m%d]
puts $startday
} else {
puts "no monday today"
#I don't know how to get last monday date
}
最佳答案
这可以相当简单地完成,利用 clock scan
具有相当复杂的解析器这一事实,并且您可以通过 -base 提供一切相关的时间戳
选项。此外,clock scan
和 clock format
都采用 -format
选项,以便您可以准确指定输入和输出数据中发生的情况。
proc getLastMonday {baseDate} {
set base [clock scan $baseDate -format "%y%m%d"]
set timestamp [clock scan "12:00 last monday" -base $base]
return [clock format $timestamp -format "%y%m%d"]
# This would work as a one-liner, provided you like long lines
}
演示:
puts [getLastMonday 190113]; # ==> 190107
puts [getLastMonday 190131]; # ==> 190128
关于date - 获取上周一日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54177503/