初学python库-datetime

1.获取当前时间

from datetime import datetime

第一个datetime是标准库的名字;

第二个datetime是该标准库内类的名字;

now是datetime类具有的函数,返回当前时间;

查看这个数据类型,是datetime.datetime类。

初学python库-datetime

 

 

 

2.构造时间

datetime标准库包含datetime类;

利用该类构造对象时,可以传入参数:年月日时分秒;

秒可以不写,默认为0;

个位数不要补零,否则会报错;

创建对象时,会对各个参数的大小的合法性进行校验:

 初学python库-datetime

 

 

3.datetime转化成timestamp时间戳

在计算机中,时间是以数字表示的,规定把1970年1月1日00:00:00 UTC+00:00规定为epoch time;

epoch time在计算机中时间存储为0;

1970年以前的时间timestamp记为负数;

当前时间就是相对与epoch time的秒数;

timestamp=0=1970-01-01 00:00:00 UTC+00:00

对应的北京时间是:timestamp=0=1970-01-01 08:00:00 UTC+08:00

timestamp一旦确定,那么所有的UTC时间(不同时区的时间)都可以确定;

全球各地计算机在任意时刻的timestamp是完全相同的。

 

python中datetime转化成timestamp的方法:

 初学python库-datetime

python中时间戳是一个浮点数,小数部分表示毫秒数;

Java和JavaScript中毫秒数也是用整数表示,这种情况只需要除以1000就可以和python格式相同。

 

4.timestamp转化成datetime

将timestamp作为参数传入datetime.fromtimestamp()函数,返回即datetime

 初学python库-datetime

注意,时间戳不区分时区,但是转化后的datetime是分时区的;

datetime.fromtimestamp(ts)是将时间戳转化为本地时间;

datetime.utcfromtimestamp()是将时间戳转化为utc标准时区的时间,格林威治,与北京相差8小时。

 

5.str转化成datetime

使用datetime.strptime()函数;

需要传入带转化的字符串作为第一个参数;

需要传入日期时间的格式化字符串:'%Y-%m-%d %H:%M:%S'

 初学python库-datetime

 

 

6.datetime转化成str

将datetime格式转化成字符串格式,使用函数strftime();

datetime对象.strftime('格式化字符串')

初学python库-datetime

%a 表示星期几,英文缩写;

%b 表示月份

 

python中日期时间的格式规定见官方文档:

https://docs.python.org/3/library/datetime.html#strftime-strptime-behavior

 

7.datetime加减

日期时间的加减运算表示将datetime往前或者往后推算,得到新的datetime;

导入timedelta类,用加减运算符;

now-timedelta(days=2)表示日期往前推两天。

 初学python库-datetime

 

 

8.本地时间转换成UTC时间

本地时间是指系统设定的时区的时间;

北京时间是utc+8:00时区的时间;

utc时间是指utc+0:00时区的时间。

datetime类有一个时区属性tzinfo,默认为none,所以不能区分这个datetime的时区;

可以强行给datetime设定一个时区。

 

8.时区转换

获取UTC时间,并设置时区为UTC0:00

 初学python库-datetime

 

 将UTC时间转换成北京时间:

使用astimezone函数

 初学python库-datetime

 

 时区转换的关键在于:

拿到一个datetime首先要获知其正确的时区,然后强制设置时区,作为基准时间;

利用带时区的datetime,通过astimezone(),可以转换到任意时区。

 datetime表示的时间需要时区信息才能确定特定的时间,没有时区信息默认为本地时间

如果要存储datetime,最佳方法是将其转换成timestamp再存储,因为timestamp与时区无关

 

上一篇:docker+jenkins的构建历史记录(Build History)时间不正确


下一篇:思科智能许可证转换技巧(Cisco Smart License Conversion Trick)