Created by [CecilWesterhof]. I created some procs to easily get some date/time formats. The first is because I miss the %F format in clock. ====== # Clock format which recognises %F proc clockFrmt {time format} { clock format ${time} -format [string map {%F {%Y-%m-%d}} ${format}] } ====== But I find it also handy as a shorter form for clock with format. ;-) ---- I want as default the current time. This is not really possible. That is why I use NOW as default and created a function to convert the NOW: ====== # When a proc has no value for thisTime convert it to current time. proc convertDefaultTime {thisTime} { if {${thisTime} == NOW} { return [clock seconds] } return ${thisTime} } ====== [Martyn Smith] For me I would use the default value NOW and not -1 it makes the code easier to read. Done, thanks for the tip. ---- Then I created the following three procs. ====== proc getDateStr {{thisTime NOW}} { set thisTime [convertDefaultTime ${thisTime}] clockFrmt ${thisTime} "%F" } proc getDateTimeStr {{thisTime NOW}} { set thisTime [convertDefaultTime ${thisTime}] clockFrmt ${thisTime} "%FT%T" } proc getTimeStr {{thisTime NOW}} { set thisTime [convertDefaultTime ${thisTime}] clockFrmt ${thisTime} "%T" } ====== An example usage: ====== proc showMessage {message {onlyTime False} {display True}} { if {${display}} { if {${onlyTime}} { set moment [getTimeStr] } else { set moment [getDateTimeStr] } puts [format "%s: %s" ${moment} ${message}] } } ====== ---- As always: comments, tips and questions are appreciated. <>Utilities | Date | Time