datetime模块中及strptime与strftime的区别和使用方法
datetime是python处理日期和时间的标准库
获取当前日期和时间
注意到\(\color{purple}{datetime}\)是模块,\(\color{purple}{datetime}\)模块还包括了一个\(\color{purple}{datetime}\)类,通过from datetime import datetime导入的才是\(\color{purple}{datetime}\)这个类
\(\color{purple}{datetime.now}\)返回当前日期和时间,其类型为\(\color{purple}{datetime}\)
获取指定日期和时间
要指定某个日期和时间,直接用参数构造一个\(\color{purple}{datetime}\):
datetime转换成timestamp(时间戳)
计算机中,时间实际上使用数字表示的。我们将1970年1月1日00:00:00 UTC+00:00时区的时刻称为epoch time,记为\(\color{purple}{0}\)(1970年以前的时间timestamp为负数),当前时间就是相对于epoch time的秒数,称为timestamp
timestamp = 0 = 1970-1-1 00:00:00 UTC+0:00
对应的北京时间是:
timestamp = 0 = 1970-1-1 08:00:00 UTC+8:00
可见timestamp的值与时区毫无关系,因为timestamp一旦确定,其UTC时间就确定了,转换到任意时区的时间也是完全确定的,这就是为什么计算机存储的当前时间是以timestamp表示的,因为全球各地的计算机在任意时刻的timestamp都是完全相同的(假定时间已校准)。
把一个\(\color{purple}{datetime}\)类型转换成timestamp只需要简单调用\(\color{purple}{timestamp}\)方法:
注意Python的timestamp是一个浮点数。如果有小数位,小数位表示毫秒数。
timestamp转换为datetime
要把timestamp转换为\(\color{purple}{timestamp}\),使用\(\color{purple}{timestamp}\)提供的\(\color{purple}{fromtimestamp()}\)方法:
str转换为datetime
很多时候,用户输入的日期和时间是字符串,要处理日期和时间,首先必须把str转换为datetime。转换方法是通过\(\color{purple}{datetime.strptime()}\)实现,需要一个日期和时间的格式化字符串:
字符串\(\color{purple}{'%Y-%m-%d %H:%M:%S'}\)规定了日期和时间部分的格式
注意转换后的datetime是没有时区信息的。
datetime转换为str
如果已经有了datetime对象,要把它格式化为字符串显示给用户,就需要转换为str,转换方法是通过\(\color{purple}{strftime()}\)实现的,同样需要一个日期和时间的格式化字符串:
datetime加减
对日期和时间进行加减实际上就是把datetime往后或往前计算,得到新的datetime。加减可以直接用\(\color{purple}{+}\)和\(\color{purple}{-}\)运算符,不过需要导入\(\color{purple}{timedelta}\)这个类:
>>> from datetime import datetime, timedelta
>>> now = datetime.now()
>>> now
datetime.datetime(2015, 5, 18, 16, 57, 3, 540997)
>>> now + timedelta(hours=10)
datetime.datetime(2015, 5, 19, 2, 57, 3, 540997)
>>> now - timedelta(days=1)
datetime.datetime(2015, 5, 17, 16, 57, 3, 540997)
>>> now + timedelta(days=2, hours=12)
datetime.datetime(2015, 5, 21, 4, 57, 3, 540997)
可见,使用timedelta可以容易算出前几天和后几天的时刻
关于"本地时间转换成UTC时间","时区转换(utcnow)"可具体查看参考链接
参考:廖雪峰python