date命令也可以理解是bash语言,总之经常遇到各种语言中的时间转换,但是记性又不好,还得去查,挺花时间的,常见的整理如下。
格式化当前时间:
date '+%Y-%m-%d %T',或者更简单点 date '+%D %T'
获取当前时间戳:
date '+%s'
时间戳转时间:
date '+%Y-%m-%d %T' -d '@1456585285'
时间转时间戳:
date '+%s' -d '02/27/16 23:21:30'
date '+%s' -d '2016-02-27 23:21:30'
date '+%s' -d '2016-02-27T23:21:30'
获取某时间段之前或者之后的时间:
date '+%D %T' -d '-1day'
date '+%D %T' -d '-1week'
date '+%D %T' -d '-1month'
date '+%D %T' -d '+1year2day'
date '+%D %T' -d '+1year2day1hour1min10second'
date '+%D %T' -d '+1year-2day'
获取星期(特别注意,通常0代表星期天):
date '+%w'
计算两时间之间的时间差:
注意:时间戳的定义为,『时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数』,所以是跟时区有关的。
获取时间戳:
datetime.datetime.now().strftime('%s')
time.time()
格式化时间,其实跟bash的date命令一样:
datetime.datetime.strftime('%D %T')
时间戳转时间,有特定函数:
datetime.datetime.fromtimestamp(1456588104)
python里面datetime可以相减,得到timedelta,当然datetime可以跟timedelta相加:
a = datetime.datetime.now()
a + datetime.timedelta(days=2, seconds=10)
获取星期(注意:0代表星期一,星期天是6,但如果使用strftime格式化的话,还是0代表星期天):
#如果今天是星期六
datetime.datetime.now().weekday() #返回5
datetime.datetime.now().strftime('%w') #返回'6'
当然解析就使用strptime了:
datetime.datetime.strptime('2016-02-28 00:01:02', '%Y-%m-%d %H:%M:%S')
获取时间戳:
echo time();
格式化当前时间:
echo strftime('%D %T');
时间戳转时间:
echo strftime('%D %T', 1456589000);
获取星期,其实只要使用strftime得到的星期都是统一,而无论是什么语言,即都是0代表星期天:
echo strftime('%w')
获取时间差没有好的办法,思路就是将时间全解析成时间戳,然后相差得到时间差秒数:
echo strtotime('2016-02-24 10:10:12') - strtotime('2016-02-23 10:10:12');
获取未来或过去某个时间:
echo strtotime("now");
echo strtotime("3 October 2005");
echo strtotime("+5 hours");
echo strtotime("+1 week");
echo strtotime("+1 week 3 days 7 hours 5 seconds");
echo strtotime("next Monday");
echo strtotime("last Sunday");
echo strftime('%D %T', strtotime('next Monday'));
解析时间方便,感觉使用strtotime比strptime更实用:
var_dump(strptime('02/29/16 00:00:00', '%m/%d/%y %H:%M:%S'));
echo strtotime('02/29/16 00:00:00');