Skip to main content

Python 3 学习笔记 - 时间相关

时间的表示

1、时间不在Python Build-in类型,Python 提供 datetime、time 和 calendar 等模块用于时间类型的处理。

2、时间戳(timestamp),表示自从1970年1月1日(00:00:00 GMT)到现在经历的秒数。

3、datetime格式:2016-07-17 16:31:00

4、时间元组,Python中大部分函数使用元组处理时间,由9个字段构成:

序号

字段

属性

0

tm_year

年,4位数

2008

1

tm_mon

1 到 12

2

tm_mday

1 到 31

3

tm_hour

0 到 23

4

tm_min

0 到 59

5

tm_sec

0 到 61 (60或61 是闰秒)

6

tm_wday

一周的第几日

0到6 (0是周一)

7

tm_yday

一年的第几日

一年中的第几天,1 到 366

8

tm_isdst

夏令时

是否为夏令时:1(夏令时)、0(不是夏令时)、-1(未知),默认 -1


获取时间

#获取系统时区
print (time.timezone)

#获取当前时间戳

print ("timestamp:", time.time() )
timestamp: 1505619448.0100803

#获取本地时间当前时间元组
print (time.localtime() )
time.struct_time(tm_year=2016, tm_mon=7, tm_mday=17, tm_hour=3, tm_min=37, tm_sec=28, tm_wday=6, tm_yday=260, tm_isdst=0)

#获取治天文时间下当前时间元组
print (gmtime = time.gmtime() )

#获取当前时间datetime
print(datetime.datetime.now() )
2016-07-17 16:04:42.246403

时间格式转换

1、时间戳->时间元组:

#当地时间转换
lctime = time.localtime(time.time())
print ("localtime:",lctime)
localtime: time.struct_time(tm_year=2016, tm_mon=7, tm_mday=17, tm_hour=3, tm_min=37, tm_sec=28, tm_wday=6, tm_yday=260, tm_isdst=0)

#格林威治天文时间转换
gmtime = time.gmtime(time.time())
print ("GM time:",gmtime)

2、时间元组->时间戳:

#保留一位小数
print (“timestramp:”, time.mktime(lctime))
timestamp: 1505619448.0

#不含小数
print (“timestramp:”, calendar.timegm(gmtime)
timestamp: 1505619448

3、时间戳 –> datetime

#当地时间转换
print(datetime.datetime.fromtimestamp(time.time()))
dt = datetime.datetime(2016,7,17,12,31)
print(dt.timestamp())

#格林威治天文时间转换
print(datetime.datetime.utcfromtimestamp(time.time()))

4、datetime –> 时间戳

#以指定日期创建datetime
dt = datetime.datetime(2016,7,17,12,31)
print(dt.timestamp())

5、可读性时间字符串格式转换:

#时间元组格式化为可读形式
lctime = time.asctime( time.localtime([ts]) )
print ("localtime:",lctime)

localtime: Sun Sep 17 03:37:28 2017

#时间元组格式化为datetime形式
print (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
2016-04-07 10:29:46

#datetime 格式化为可读形式
dt = dtat.time.datetime.now()
print(now.strftime('%a, %b %d %H:%M'))
Wed, Mar 29 16:18

#字符串-> datetime
b = "21/11/06 16:30"
print (
datetime.datetime.strptime(b, "%d/%m/%y %H:%M"))
2006-11-21 16:30:00

#字符串->时间元组->时间戳
a = "Sat Mar 28 22:24:24 2016"
print (time.mktime(time.strptime(a,"%a %b %d %H:%M:%S %Y")))
1459175064.0

6、时间日期格式化符号:

  1. %y :两位数的年份表示(00-99)
  2. %Y :四位数的年份表示(000-9999)
  3. %m :月份(01-12)
  4. %d :月内中的一天(0-31)
  5. %H :24小时制小时数(0-23)
  6. %I :12小时制小时数(01-12)
  7. %M :分钟数(00=59)
  8. %S :秒(00-59)
  9. %a :本地简化星期名称
  10. %A :本地完整星期名称
  11. %b :本地简化的月份名称
  12. %B :本地完整的月份名称
  13. %c :本地相应的日期表示和时间表示
  14. %j :年内的一天(001-366)
  15. %p :本地A.M.或P.M.的等价符
  16. %U :一年中的星期数(00-53)星期天为星期的开始
  17. %w :星期(0-6),星期天为星期的开始
  18. %W :一年中的星期数(00-53)星期一为星期的开始
  19. %x :本地相应的日期表示
  20. %X :本地相应的时间表示
  21. %Z :当前时区的名称
  22. %% :%号本身

Calendar模块

1、Python默认周一为每周的第一天,可通过调用 calendar.setfirstweekday()函数进行修改:

#设置每周的起始日期,0(周一)到6(周日)

calendar.setfirstweekday(weekday)

2、常用calendar函数列举

#获取某月日历
print (calendar.month(2017, 7,w=2,l=1))

     July 2017
Mo Tu We Th Fr Sa Su
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
#获取2017年全年日历
print (calendar.calendar(2017,w=2,l=1,c=6))

#以列表形式输出某月日历
print (calendar.monthcalendar(2017, 7))
[[0, 0, 0, 0, 0, 1, 2], [3, 4, 5, 6, 7, 8, 9], [10, 11, 12, 13, 14, 15, 16], [17, 18, 19, 20, 21, 22, 23], [24, 25, 26, 27, 28, 29, 30], [31, 0, 0, 0, 0, 0, 0]]

#闰年判断,是返回True,否则为false
calendar.isleap(year)

#返回给定日期周几,0(周一)到6(周日)
calendar.weekday(year,month,day)

Comments

Popular posts from this blog

关于VMware虚拟网卡网络问题的处理

本篇适用情形: VMware虚机拷贝或移动后网络问题 其它虚机格式转换VMware虚机后网络问题 VMware虚机虚拟网卡设置问题 修改VMware虚机虚拟网卡类型 Ubuntu 16.04虚拟机网卡设置问题 Highlight: /etc/network/interface       //网卡配置文件(ubuntu) lspci -vk lsmod ifconfig –a ethtool resolvconf -u 正文: 【 Step1】 在着手解决问题之前,先查看一下VMware虚机的网卡配置是否正常。打开虚机目录下的 xxx.vmx   文件,找到虚拟网卡的配置信息(第1块网卡通常为ethernet0),例如: VMware虚拟网卡有以下几种设备类型: ethernet0.virtualDev = "vlance"          //AMD PCNet AM79C970A 10/100Mbps ethernet0.virtualDev = "e1000"          //Intel(R) 82545EM PRO/1000 PCI ethernet0.virtualDev = "e1000e"        //Intel(R) 82545L PRO/1000 PCIe ethernet0.virtualDev = "vmxnet"        //VMware PCI Ethernet Adapter VMware Workstation / Player 建的虚机默认“vlance” 是一块比较老的百兆网卡,可以修改为e1000或e1000e(这两者的区别可以看做一块是pci网卡一块是pcie接口网卡);没有正常安装vmware tools的情况下,不建议改为“vmxnet”。 以下内容在Ubuntu 16.04 LTS虚机下进行。 【 Step2】 执行ifconfig查看网口配置信息,可能只有环回口的信息: 执行ifconfig –a 查看系统识别到的所有网口,如果能查看到其它网口信息,例如: 说明虚拟网卡的驱动是ok的,继续 Step3 。 这是一块e1000e的虚拟网卡,根

Tor洋葱路由的设置与使用

先说明一下,这里只是利用Tor来访问被GWF屏蔽的优秀服务(如Wikipedia、Blogger、GG App等),并不侧重于如何匿名访问网络。以下Tor设置方法适用于: MS Windows(2000/XP/Vista/Server)系统 第一步:下载并安装Tor 关于Tor(The Onion Router,洋葱路由)的工作原理,可以参考枪旗工作室的说明 ( http://tcno.net/doc/tor/#para1 )。在Windows下安装配置Tor已经非常容易了,直接下载这样一个Tor的Windows 捆绑软件包( Vidalia-Tor-Privoxy Bundle ),其中已经预先配置好这些软件能够一同工作。 安装前可以看到套件捆绑了哪些软件:Tor、Vidalia(Tor 的一个图形用户界面)和 Privoxy(Web 代理软件)、Torbutton(Firefox浏览器插件)全选这些软件进行安装。 安装完成后会自动运行Vidalia,在弹出的控制面板上可以看到当前的状态,Tor已经运行了,此时不需要再进行其它设置了。 第二步:配置浏览器使用Tor 如果使用 Firefox 浏览器,Bundle里已经附带了 Torbutton 插件 ,打开/重启Firefox就会在右下角显示Tor Enabled/Disabled,单击它可以选择是否开启Tor代理功能。 对于 Internet Explorer 没有现成的插件可用,需要手动配置代理设置,也很容易。 菜单位置 工具 - Internet 选项 - 连接 - 局域网设置 - 代理服务器 - 高级 - 服务器 在代理理服务器地址栏里填入 "localhost",端口为 "8118"(Privoxy不支持FTP代理,填不填都无所谓了);注意套接字SOCKS代理的端口为 "9050",如果有其它选项,请选择Socks5,然后"确定"即可。 对于 Maxthon ,如果对IE设置了Tor可以选择“使用IE代理设置”,或者手动添加一个代理列表,内容与上面填写的一样,然后选择应用就可以了。 这里说明一下 Privoxy 的作用,因为当直接使用 SOCKS 代理时,浏览器会泄露

Bitwarden 配置 Let’s Encrypt 证书

由于在内网环境部署的Bitwarden,不能通过安装脚本自动申请 Let’s Encrypt 的证书。 起初我用了一个自签名证书,发现特别不好使,虽然在firefox 跟 chrome 内核的浏览器上都能通过插件访问,但必须添加信任才行,特别是用Bitwarden Desktop 客户端连的时候,一直报错,可能是不认自签名证书。 于是琢磨了下怎么手动申请Let’s Encrypt的证书用于内网,对过程简单梳理如下。 自签名证书 | Self-Signed Certificate 如果你在内网环境只需要自签名证书,可以参考Bitwarden的帮助文档( Installing and depoying )进行设置: 1、生成自签名证书: //一条命创建私钥和证书: openssl req -x509 -newkey rsa:4096 -sha256 –nodes -days 10950 \    -keyout privite.key -out identity.crt \    -subj "/C= US /ST= New York /L= New York /O= Company Name /OU= CREAST /CN= bw.creast.win " 将生成的文件放到 /ssl 目录下: privite.key     ~/bwdata/ssl/ bw.creast.win/private.key identity.crt      ~/bwdata/ssl/ bw.creast.win/identity.crt 2、生成.pfx格式证书文件: //一条命令将前面生成的私钥和证书打包成需要的pfx格式文件 openssl pkcs12 -export -out ./ identity.pfx -inkey privite.key \    -in identity.crt -certfile identity.crt -passout pass: IDENTITY_CERT_PASSWORD 注意 IDENTITY_CERT_PASSWORD 跟./env/global.override.e