python 时间处理_一文搞定Python的时间处理

time模块

# -*- coding: utf-8 -*-

# author: inpurer(月小水长)

# pc_type lenovo

# create_date: 2018/12/3

# file_name: timetest.py

# description: 月小水长,热血未凉

import time

t0 = time.time()

#description: 输出当前时间距离1970.1.1的秒数,精确到小数点后6位,也叫做时间戳

#output sample: 1543799532.602318

print(t0)

t1 = time.localtime(t0)

#description: 把时间戳转成元组,包含七个元素,前六个见名知意,tm_wday是指今天是当前周的第几天(index from 0),tm_yday类似,tm_isdst是否是夏令时,不用关心

#output sample: time.struct_time(tm_year=2018, tm_mon=12, tm_mday=3, tm_hour=9, tm_min=22, tm_sec=24, tm_wday=0, tm_yday=337, tm_isdst=0)

print(t1)

#so,可以这样输出今天是今年的第多少天

print(t1[-2]+1)

#下面是对该元组的格式化

#description: 简单可读形式

#output sample: Mon Dec 3 09:31:18 2018

t2 = time.asctime(t1)

print(t2)

#description: 可通过参数设置成各种形式,下面是一种标准形式,各参数见名知意

#output sample: 2018-12-03 09:33:36

t3 = time.strftime("%Y-%m-%d %H:%M:%S", t1)

print(t3)

#%y 两位数的年份表示(00-99)

# %Y 四位数的年份表示(000-9999)

# %m 月份(01-12)

# %d 月内中的一天(0-31)

# %H 24小时制小时数(0-23)

# %I 12小时制小时数(01-12)

# %M 分钟数(00=59)

# %S 秒(00-59)

#

# %a 本地简化星期名称

# %A 本地完整星期名称

# %b 本地简化的月份名称

# %B 本地完整的月份名称

# %c 本地相应的日期表示和时间表示

# %j 年内的一天(001-366)

# %p 本地A.M.或P.M.的等价符

# %U 一年中的星期数(00-53)星期天为星期的开始

# %w 星期(0-6),星期天为星期的开始

# %W 一年中的星期数(00-53)星期一为星期的开始

# %x 本地相应的日期表示

# %X 本地相应的时间表示

# %Z 当前时区的名称

# %% %号本身

# 下面是把格式化字符串转成元组

# description: 第一个参数个格式化后的字符串,后一个参数和格式化对应,便于反格式化

# output sample: time.struct_time(tm_year=2018, tm_mon=12, tm_mday=3, tm_hour=9, tm_min=47, tm_sec=7, tm_wday=0, tm_yday=337, tm_isdst=-1)

t4 = time.strptime(t3,'%Y-%m-%d %H:%M:%S')

print(t4)

# 把元组转成时间戳

#description: 是time.localtime的反函数,不过由于格式化的原因,精度有所下降

#output sample: 1543801627.0

t5 = time.mktime(t4)

print(t5)

datetime模块

# -*- coding: utf-8 -*-

# author: inpurer(月小水长)

# pc_type lenovo

# create_date: 2018/12/3

# file_name: timetest.py

# description: 月小水长,热血未凉

import datetime

#通过datetime.datetime.now()可以获得当前日期时间的一个实例

#这个实例是一个datetime类对象而不是字符串

#虽然直接打印该实例输出的是一个字符串,只是调用datetime实现的__str__方法而已

t0 = datetime.datetime.now()

print(t0) #print: 2018-12-03 12:55:49.905971

print(type(t0)) #print:

#然后就可以通过对象名.的方法输出各个时间信息,该信息是一个int类型

print(t0.year) #print: 2018

print(type(t0.year)) #print:

print(t0.month)

print(t0.day)

print(t0.hour)

print(t0.minute)

print(t0.second)

时间的存储,比较

存储

理论上我们可以通过拼接datetime.datetime.now()实例的各个时间变量来构建我们自己的想要时间,例如我们想要存储year-month-day这样的时间信息,我们可以这样做:

import datetime

t0 = datetime.datetime.now()

#注意year/month/day都是int类型,不像java那样可以直接拼接字符串和数字

wanted_time = str(t0.year)+"-"+str(t0.month)+"-"+str(t0.day)

但是,这样做会有非常尴尬的问题:格式不统一,可能会出现下面这样的存储形式:

2018-1-1

2018-1-11

2018-11-1

2018-11-11

……………..

特别是在数据量非常庞大的时候,阅读起来非常费力,这是因为year/month/day这些都是int型,所以1就是1,不会显示成01,要实现对齐效果,必须还得字符串的格式化,所以,我们通常用的是time模块(其实datetime也有字符串的格式化,不过展开讲就太多了,不必要浪费这么多学习成本)

import time

t0 = time.localtime()

wanted_time = time.strftime("%Y-%m-%d",t0)

比较

就拿上面刚刚说的wanted_time来说,可以直接通过>、=、<这些符号来比较,因为wanted_time就是一个字符串。

标签: Python

顶一下

(0)

0%

踩一下

(0)

0%

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值