python timedatetime

一、time模块

time模块中时间表现的格式主要有三种:

a、timestamp时间戳,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量

b、struct_time时间元组,共有九个元素组。

c、format time 格式化时间,已格式化的结构使时间更具可读性。包括自定义格式和固定格式。

1、时间格式转换图:

在这里插入图片描述
2、主要time生成方法和time格式转换方法实例:
a、timestamp时间戳 ----> struct_time时间元组

# 生成timestamp
>>> import time
>>> time.time()
1548657584.54007

# 生成struct_time时间
>>> time.localtime()   # 本地时间     不输入参数,默认参数time.time()   
time.struct_time(tm_year=2019, tm_mon=1, tm_mday=28, tm_hour=14, tm_min=39, tm_sec=52, tm_wday=0, tm_yday=28, tm_isdst=0)

# timestamp 转换为 struct_time
 time.localtime(time.time())    # time.localtime(时间戳)

>>> time.gmtime(time.time())   # utc时间,格林威治时间     不输入参数,默认参数time.time()   
time.struct_time(tm_year=2019, tm_mon=1, tm_mday=28, tm_hour=6, tm_min=48, tm_sec=26, tm_wday=0, tm_yday=28, tm_isdst=0)

time.ctime([secs]) 生成固定格式的时间表示格式,把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果为指定参数,将会默认使用time.time()作为参数。它的作用相当于time.asctime(time.localtime(secs)) 。

  • 参数:sec – 要转换为字符串时间的秒数
>>> time.ctime()
'Mon Jan 28 15:16:07 2019'
>>> time.ctime(time.time())
'Mon Jan 28 15:16:26 2019'

b、struct_time时间元组 ----> timestamp时间戳

>>> time.mktime(time.localtime())
1548658397.0

c、struct_time时间元组 ----> format time 格式化时间

struct_time元组元素结构

属性                            值
tm_year(年)                  比如2011 
tm_mon(月)                   1 - 12
tm_mday(日)                  1 - 31
tm_hour(时)                  0 - 23
tm_min(分)                   0 - 59
tm_sec(秒)                   0 - 61
tm_wday(weekday)             0 - 6(0表示周日)
tm_yday(一年中的第几天)        1 - 366
tm_isdst(是否是夏令时)        默认为-1
>>> time.strftime("%Y-%m-%d %X",time.localtime())
'2019-01-28 14:55:44'
>>> time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
'2019-01-28 15:07:05'
>>> time.strftime("%Y-%m-%d %X",time.gmtime())
'2019-01-28 06:57:31'
>>> time.strftime("%Y-%m-%d %X")     # 第二个参数默认time.localtime()
'2019-01-28 14:58:22'

time.asctime([t])生成固定格式的时间表示格式,把一个表示时间的元组或者struct_time表示为’Sat Jan 13 21:56:34 2018’这种形式。如果没有给参数,会将time.localtime()作为参数传入。

  • 参数:t – 9个元素的元组或者通过函数 gmtime() 或 localtime() 返回的时间值;
>>> time.asctime()
'Mon Jan 28 15:12:44 2019'
>>> time.asctime(time.gmtime())
'Mon Jan 28 07:14:27 2019'

d、format time 格式化时间 ----> struct_time时间元组
在这里插入图片描述

>>> time.strptime('2018-1-28 15:37:06', '%Y-%m-%d %X')
time.struct_time(tm_year=2018, tm_mon=1, tm_mday=28, tm_hour=15, tm_min=37, tm_sec=6, tm_wday=6, tm_yday=28, tm_isdst=-1)

>>> time.strptime("2019-01-28 15:20:30","%Y-%m-%d %H:%M:%S")
time.struct_time(tm_year=2019, tm_mon=1, tm_mday=28, tm_hour=15, tm_min=20, tm_sec=30, tm_wday=0, tm_yday=28, tm_isdst=-1)

二、datetime


datatime模块重新封装了time模块,提供更多接口,提供的类有:date,time,datetime,timedelta,tzinfo。
这里主要说下datetime,timedelta
1、datetime

datetime.today():返回一个表示当前本地时间的datetime对象;
>>> datetime.datetime.today()
datetime.datetime(2019, 1, 28, 15, 23, 13, 982944)

datetime.now([tz]):返回一个表示当前本地时间的datetime对象,如果提供了参数tz,则获取tz参数所指时区的本地时间;
>>> datetime.datetime.now()    # tz 怎么写?
datetime.datetime(2019, 1, 28, 15, 29, 18, 134531)

datetime.utcnow():返回一个当前utc时间的datetime对象;#格林威治时间
>>> datetime.datetime.utcnow()
datetime.datetime(2019, 1, 28, 7, 29, 53, 207667)

datetime.fromtimestamp(timestamp[, tz]):根据时间戮创建一个datetime对象,参数tz指定时区信息;
>>> datetime.datetime.fromtimestamp(time.time())
datetime.datetime(2019, 1, 28, 15, 30, 27, 36910)

datetime.utcfromtimestamp(timestamp):根据时间戮创建一个datetime对象,utc时间;
>>> datetime.datetime.utcfromtimestamp(time.time())
datetime.datetime(2019, 1, 28, 7, 31, 0, 627879)

datetime.combine(date, time):根据date和time,创建一个datetime对象;
datetime.strptime(date_string, format):将格式字符串转换为datetime对象;
>>> datetime.datetime.strptime('2018-01-28 15:20:21','%Y-%m-%d %H:%M:%S')
datetime.datetime(2018, 1, 28, 15, 20, 21)

>>> a = datetime.datetime.now()
datetime.datetime(2019, 1, 28, 15, 39, 51, 513993)
>>> a.strftime('%Y-%m-%dT%H:%M')    # 这个应该用的是time模块方法 ,不是,应该是datetime模块中的time
'2019-01-28T15:39'

2、timedelta类,时间加减

#coding:utf-8
from  datetime import *

dt = datetime.now()
#日期减一天
dt1 = dt + timedelta(days=-1)#昨天
dt2 = dt - timedelta(days=1)#昨天
dt3 = dt + timedelta(days=1)#明天
delta_obj = dt3-dt
print type(delta_obj),delta_obj#<type 'datetime.timedelta'> 1 day, 0:00:00
print delta_obj.days ,delta_obj.total_seconds()#1 86400.0
def getBeforeSecond(timestamp,seconds,format='%Y-%m-%d %H:%M:%S'):
    '''
    以给定时间戳为基准,后退 seconds 秒得到对应的时间戳
    '''
    now_time=datetime.datetime.strptime(timestamp,'%Y-%m-%d %H:%M:%S')
    for i in range(seconds):
        now_time-=datetime.timedelta(seconds=1)
    next_timestamp=now_time.strftime('%Y-%m-%d %H:%M:%S')
    print 'next_timestamp: ',next_timestamp

https://www.cnblogs.com/tkqasn/p/6001134.html

https://blog.csdn.net/brucewong0516/article/details/79044905

https://blog.csdn.net/Together_CZ/article/details/85247191

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值