在工作中,所有日期配置文件都是新生成的并附加了一个
会话编号。 公司在Feb 16
上公开,86400
为秒
在一天。 会话编号是通过减去公司开始生成的
来自seconds_since_last_day的日子,并添加几个零
这是与days配置文件交互的关键。我明白了 - 但是我没有 了解
date -ud "$distance days ago 00:00:00"
。
这是自1970年以来的秒数吗?
if $session; then
# return the session of the last day
seconds_since_day_one=`date -ud "Feb 16 2002" +"%s"`
seconds_since_last_day=`date -ud "$distance days ago 00:00:00" +"%s"`
days_between=`printf "%010d" $(( (seconds_since_last_day - seconds_since_day_one) / 86400 ))`
# Truncate on the left to 9 bytes to leave room
# to append the engine suffix for your environment
echo $days_between | awk '{l=length($1); print substr( $1, (l-8), l )}'
答案 0 :(得分:2)
date -ud "$distance days ago 00:00:00"
本身只是以一种非常易读的格式在一定天数之前打印日期,但是当您添加FORMAT字符串来控制输出+"%s"
时确实意味着所谓的数字Unix时间(自1970-01-01 00:00:00 UTC以来的秒数)。
如果变量$distance
设置为数字,则显示前几天的日期,如果设置为0则表示今天,1表示昨天,2表示前天,依此类推。为了更好地理解这些格式和相关关键字,在GNU coreutils包中(以及其他地方)有相当好的文档。
检查以下网址:
http://www.gnu.org/software/coreutils/manual/html_node/Relative-items-in-date-strings.html#Relative-items-in-date-strings
http://www.gnu.org/software/coreutils/manual/html_node/Date-input-formats.html
http://www.gnu.org/software/coreutils/manual/html_node/date-invocation.html#date-invocation
维基百科对Unix时间的解释:
http://en.wikipedia.org/wiki/Unix_time
答案 1 :(得分:0)
date
选项-d提供了一个通用字符串来获取日期。
因此,例如,date -d yesterday
将打印昨天的日期,date -d 'yesterday 12:00 AM'
将打印昨天的日期,时间设置为上午12:00。
因此,date -d 6 days ago 00:00:00
将打印6天前的日期,时间设置为00:00:00。我希望它能回答你的问题。
格式+“%s”告诉date
打印1970年的秒数,而不是日期。
答案 2 :(得分:0)
awk中的mktime和strftime可用于获取时间日期。 http://www.gnu.org/software/gawk/manual/html_node/Time-Functions.html
例如,strftime(“%A”,mktime(“YYYY MM DD 00 00 00”)) 应该给你一天。