date - 获取上周一的日期
问题描述
我想获取给定日期的最后一个星期一日期。例如,如果我的输入是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
推荐阅读
- c# - 维护多个域的用户会话
- javascript - 当两者具有相同名称时,javascript类方法如何知道调用函数或方法?
- python - 如何基于简单的 numpy 数组指定 Conv2d 输入形状
- swift - 如何让 ImagePicker 为 Firebase 中的所有用户生成标准圆形图像?
- docker - Docker Compose 主机名 DNS 查找失败
- android - 无法在 Mockito 中验证俘虏
- c# - 所需的数据注释无法使用 XAML
- kotlin - 如何使用特定策略展平列表列表
- javascript - 如果字符串包含数组中的单词,则删除它们
- angular - Angular 7 顺序订阅