from datetime import datetime
from dateutil.relativedelta import relativedelta
#=========================================================================
#从字符串转为datetime对象,format与bb必须严格匹配
bb = '2021-11-18 23:15:16'
cc = datetime.strptime(bb,'%Y-%m-%d %H:%M:%S')
cc
Out[37]: datetime.datetime(2021, 11, 18, 23, 15, 16)
#==========================================================================
#从datetime对象转换成字符串,不必严格匹配。可选择性取出
dd = datetime.strftime(cc, "%Y-%m-%d")
dd
Out[39]: '2021-11-18'
#==========================================================================
#时间加减
#注意是months而非month,days而非day
#有什么不同,可以试试
ff = cc - relativedelta(months=1) + relativedelta(days=1)
ff
Out[41]: datetime.datetime(2021, 10, 19, 23, 15, 16)
perl的时间操作:
use POSIX qw(strftime);
#这种方法可读性差
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime;
print strftime("%Y-%m-%d %H:%M:%S\n", localtime(time));
print strftime("%Y-%m-%d %H:%M:%S\n", localtime(time) - 1*3600);
print strftime("%Y-%m-%d %H:%M:%S\n", localtime(time) - 24*3600);
print strftime("%Y-%m-%d %H:%M:%S\n", localtime(time) - 30*24*3600);
但这里有个诡异之处:
这样做是错的:
my $date = localtime(time);
my $today = strftime("%Y%m%d", $date);
而这样是对的:
my $today = strftime("%Y%m%d", localtime(time));