python3 datatime_python3时间模板之time与datetime模块

在Python中,通常有这几种方式来表示时间:

时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。

格式化的时间字符串(Format String)

结构化的时间(struct_time):struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时)

实例:

#!/usr/bin/env python3

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

# Author : darren

"""

"""

import time

a = time.time() #

b = time.strftime('%Y-%m-%d %X %p')

c = time.strftime('%Y-%m-%d %H:%M:%S')

d = time.localtime() #结构化时间

print(a)

print(b)

print(c)

print('结构化时间:',d)

# print(d.tm_year) #单独得到特定值

#datatime模块

import datetime

a = datetime.datetime.now()

print('datetime时间:', a)

#计算三天后是什么时间

b = datetime.datetime.now() + datetime.timedelta(days=3)

print('计算三天后是什么时间',b)

#时间之间的转换

print('---------------------时间之间的转换----------------------')

#需求:当前得到一个格式化字符串的时间数据:2020-05-03 15:48:16 。在这个时间的基础加算7天后是什么时间

t1 = '2020-05-03 15:48:16'

t = '%Y-%m-%d %H:%M:%S'

print('当前时间:',t1)

t2 = time.strptime(t1,t)

t3 = time.mktime(t2)

t4 = t3 + 7*24*3600

#再转回去

t5 = time.localtime(t4)

t6 = time.strftime(t, t5)

print('最后得到7天后的时间是:',t6)

#整个思路================

#第一步:

struct_time = time.strptime('2020-05-03 15:48:16', '%Y-%m-%d %H:%M:%S') #这里转成结构化时间

timestamp = time.mktime(struct_time) + 7*24*3600 #这里得到最后7点后的时间戳的时间

#第二步:转回去

res = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(timestamp))

print('最后得到7天后的时间是:',res)

执行结果:

1588514427.7860322

2020-05-03 22:00:27 PM

2020-05-03 22:00:27

结构化时间: time.struct_time(tm_year=2020, tm_mon=5, tm_mday=3, tm_hour=22, tm_min=0, tm_sec=27, tm_wday=6, tm_yday=124, tm_isdst=0)

datetime时间: 2020-05-03 22:00:27.792943

计算三天后是什么时间 2020-05-06 22:00:27.792975

---------------------时间之间的转换----------------------

当前时间: 2020-05-03 15:48:16

最后得到7天后的时间是: 2020-05-10 15:48:16

最后得到7天后的时间是: 2020-05-10 15:48:16

以上例子产要依据下图的原理,其中计算机认识的时间只能是'时间戳'格式,而程序员可处理的或者说人类能看懂的时间有: '格式化的时间字符串','结构化的时间' ,于是有了下图的转换关系

#--------------------------按图2转换时间

# asctime([t]) : 把一个表示时间的元组或者struct_time表示为这种形式:'Sun Jun 20 23:21:05 1993'。

# 如果没有参数,将会将time.localtime()作为参数传入。

print(time.asctime())#Sun Sep 11 00:43:43 2016

# ctime([secs]) : 把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果参数未给或者为

# None的时候,将会默认time.time()为参数。它的作用相当于time.asctime(time.localtime(secs))。

print(time.ctime()) # Sun Sep 11 00:46:38 2016

print(time.ctime(time.time())) # Sun Sep 11 00:46:38 2016

datatime模块

#时间加减

import datetime

# print(datetime.datetime.now()) #返回 2016-08-19 12:47:03.941925

#print(datetime.date.fromtimestamp(time.time()) ) # 时间戳直接转成日期格式 2016-08-19

# print(datetime.datetime.now() )

# print(datetime.datetime.now() + datetime.timedelta(3)) #当前时间+3天

# print(datetime.datetime.now() + datetime.timedelta(-3)) #当前时间-3天

# print(datetime.datetime.now() + datetime.timedelta(hours=3)) #当前时间+3小时

# print(datetime.datetime.now() + datetime.timedelta(minutes=30)) #当前时间+30分

#

# c_time = datetime.datetime.now()

# print(c_time.replace(minute=3,hour=2)) #时间替换

执行结果:

2020-05-03 22:09:34.487423

2020-05-03

2020-05-03 22:09:34.487438

2020-05-06 22:09:34.487443

2020-04-30 22:09:34.487450

2020-05-04 01:09:34.487456

2020-05-03 22:39:34.487464

2020-05-03 02:03:34.487471

你可能感兴趣的:(python3,datatime)