Day19.python时间和日期
时间:2022-07-25
本文章向大家介绍Day19.python时间和日期,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Python时间和日期
datetime模块专门用于时间和日期的处理
常用的功能有以下几个:
datetime.now() & datetime.today()
import datetime
print(datetime.datetime.now())
# datetime.today()
#2020-09-21 23:13:05.245157
print(datetime.datetime.today())
#2020-09-21 23:13:57.062886
datetime.strptime()
print(datetime.datetime.strptime('2020/08/09',format('%Y/%m/%d')))
#2020-08-09 00:00:00
print(datetime.datetime.strptime('20-08-09',format('%y-%m-%d')))
#2020-08-09 00:00:00
datetime.strftime()
接收以时间元组,并返回以可读字符串表示的当地时间,格式由参数format决定。
dt = datetime.datetime.now()
print("======================")
print('时间:(%Y-%m-%d %H:%M:%S %f): ',dt.strftime( '%Y-%m-%d %H:%M:%S %f' ) )
print('时间:(%Y-%m-%d %H:%M:%S %p): ' , dt.strftime( '%y-%m-%d %I:%M:%S %p' ) )
print('星期缩写%%a: %s ' % dt.strftime( '%a' ))
print('星期全拼%%A: %s ' % dt.strftime( '%A' ))
print('月份缩写%%b: %s ' % dt.strftime( '%b' ) )
print('月份全批%%B: %s ' % dt.strftime( '%B' ))
print('日期时间%%c: %s ' % dt.strftime( '%c' ) )
print('今天是这周的第%s天 ' % dt.strftime( '%w' ) )
print( '今天是今年的第%s天 ' % dt.strftime( '%j' ))
print('今周是今年的第%s周 ' % dt.strftime( '%U' ) )
print('今天是当月的第%s天 ' % dt.strftime( '%d' ))
'''
======================
时间:(%Y-%m-%d %H:%M:%S %f): 2020-09-21 23:30:51 573645
时间:(%Y-%m-%d %H:%M:%S %p): 20-09-21 11:30:51 PM
星期缩写%a: Mon
星期全拼%A: Monday
月份缩写%b: Sep
月份全批%B: September
日期时间%c: Mon Sep 21 23:30:51 2020
今天是这周的第1天
今天是今年的第265天
今周是今年的第38周
今天是当月的第21天
'''
时间日期的应用场景
1.简介
在编写代码时,往往涉及时间、日期、时间戳的相互转换。
2.示例
# 引入模块
import time, datetime
2.1 str类型的日期转换为时间戳
# 字符类型的时间
testStr = '2020-09-21 23:26:33'
# 转为 时间数组
timeArray = time.strptime(testStr, "%Y-%m-%d %H:%M:%S")
print(timeArray)
# timeArray可以调用tm_year等
print(timeArray.tm_year) # 2020
# 转为时间戳
timeStamp = int(time.mktime(timeArray))
print(timeStamp) # 1600701993
# 结果如下
time.struct_time(tm_year=2020, tm_mon=9, tm_mday=21, tm_hour=23, tm_min=26, tm_sec=33, tm_wday=0, tm_yday=265, tm_isdst=-1)
2020
1600701993
2.2 更改str类型日期的显示格式
testStr1 = "2020-09-21 23:40:00"
# 转为数组
timeArray = time.strptime(testStr1, "%Y-%m-%d %H:%M:%S")
# 转为其它显示格式
otherStyleTime = time.strftime("%Y/%m/%d %H:%M:%S", timeArray)
print (otherStyleTime)
tss3 = "2020/09/21 23:40:00"
timeArray = time.strptime(tss3, "%Y/%m/%d %H:%M:%S")
otherStyleTime = time.strftime("%Y-%m-%d %H:%M:%S", timeArray)
print (otherStyleTime)
"""
-----------------------
2020/09/21 23:40:00
2020-09-21 23:40:00
======================
"""
2.3 时间戳转换为指定格式的日期
# 使用time
timeStamp = 1600701993
timeArray = time.localtime(timeStamp)
otherStyleTime = time.strftime("%Y--%m--%d %H:%M:%S", timeArray)
print(otherStyleTime) # 2020--09--21 23:26:33
# 使用datetime
timeStamp = 1600101993
dateArray = datetime.datetime.fromtimestamp(timeStamp)
otherStyleTime = dateArray.strftime("%Y--%m--%d %H:%M:%S")
print(otherStyleTime) # 2020--09--15 00:46:33
# 使用datetime,指定utc时间,相差8小时
timeStamp = 1600201993
dateArray = datetime.datetime.utcfromtimestamp(timeStamp)
otherStyleTime = dateArray.strftime("%Y--%m--%d %H:%M:%S")
print(otherStyleTime) # 2020--09--15 20:33:13
2.4 获取当前时间并且用指定格式显示
print("+++++++++++++++++++++++++++++++++++++++++++")
# time获取当前时间戳
now = int(time.time()) # 1533952277
timeArray = time.localtime(now)
print (timeArray)
otherStyleTime = time.strftime("%Y--%m--%d %H:%M:%S", timeArray)
print (otherStyleTime)
# 结果如下
"""
time.struct_time(tm_year=2020, tm_mon=9, tm_mday=21, tm_hour=23, tm_min=45, tm_sec=53, tm_wday=0, tm_yday=265, tm_isdst=0)
2020--09--21 23:45:53
"""
# datetime获取当前时间,数组格式
now = datetime.datetime.now()
print (now)
otherStyleTime = now.strftime("%Y--%m--%d %H:%M:%S")
print (otherStyleTime)
# 结果如下:
"""
2020-09-21 23:45:53.543487
2020--09--21 23:45:53
"""
日期函数 time模块函数
这里说的字符串不是一般意义上的字符串,是指在读取日期类型的数据时,如果还没有及时解析字符串,它就还不是日期类型,那么此时的字符串该怎么与时间戳之间进行转换呢?
表示日期时间常用三种形式:
- 秒为单位的浮点数
- struct_time 元组
- 时间字符串
import time; # 引入time模块
ticks = time.time()
print ("当前时间戳为:", ticks)
当前时间戳为: 1600704429.9781017
秒为单位的浮点数 转换为 时间元组
tm_struct = time.localtime(ticks)
print(tm_struct)
time.struct_time(tm_year=2020, tm_mon=9, tm_mday=22, tm_hour=0, tm_min=8, tm_sec=2, tm_wday=1, tm_yday=266, tm_isdst=0)
有时我们需要得到 格林威治时间,那么可以用time.gmtime() 函数:
#格林威治时间
print(time.gmtime(ticks))
time.struct_time(tm_year=2020, tm_mon=9, tm_mday=21, tm_hour=16, tm_min=9, tm_sec=18, tm_wday=0, tm_yday=265, tm_isdst=0)
时间元组转换为秒为单位的浮点数
print(time.mktime(tm_struct))
1600704621.0
时间元组转换为时间字符串
转换方法有很多,最简单的是 asctime():
time_str = time.asctime( tm_struct )
print(time_str)
"""
Tue Sep 22 00:12:14 2020
"""
如果要精确控制格式,我们可以使用 strftime():
tm_1=time.strftime("%Y-%m-%d %H:%M:%S", tm_struct)
tm_2=time.strftime("%a %b %d %H:%M:%S %Y", tm_struct)
print(tm_1)
print(tm_2)
"""
2020-09-22 00:14:13
Tue Sep 22 00:14:13 2020
"""
时间字符串 转换为 时间元组
函数 time.strptime() 可以完成这个转换,下面是个例子
tm2_struct = time.strptime('2020-09-22 01:34:50', "%Y-%m-%d %H:%M:%S")
print(tm2_struct)
"""
time.struct_time(tm_year=2020, tm_mon=9, tm_mday=22, tm_hour=1, tm_min=34, tm_sec=50, tm_wday=1, tm_yday=266, tm_isdst=-1)
"""
秒为单位的浮点数 转换为 时间字符串
time.ctime() 类似于 time.asctime(), 请看下面的例子:
tm_3=time.ctime(ticks)
print(tm_3)
"""
Tue Sep 22 00:17:54 2020
"""
#如果想精确控制输出的字符串,我没查到有现成的函数。估计只能先转成元组,然后在格式化成字符串。
#小编写了个转换函数:
def time2str(ticks, fmt='%a %b %d %H:%M:%S %Y'):
tm = time.localtime(ticks)
return time.strftime(fmt, tm)
时间字符串 转换为 秒为单位的浮点数
def str2time(str, fmt='%a %b %d %H:%M:%S %Y'):
tm = time.strptime(str, fmt)
return time.mktime(tm)
# 这里也是参考函数
作业练习
根据起始和终止日期生成中间日期
pandas.to_datetime(arg,errors ='raise',utc = None,format = None,unit = None )将字符串转换为日期函数
#转换时间字符串格式,方法二:
import pandas as pd
start = pd.to_datetime("20200922")
print("===================================")
print(start)
s=start.strftime('%Y-%m-%d') # 将datetime转为字符串,并以'%Y-%m-%d'格式输出
print(s)
print("===================================")
"""
==================================
2020-09-22 00:00:00
2020-09-22
==================================
"""
编写函数:
import time; # 引入time模块
from pandas import DatetimeIndex
def date_range(cls, start=None, end=None, periods=None, freq=None, input_format=None, out_format=None):
"""
生成时间序列
:param start: 序列开始时间
:param end: 序列结束时间, 给定start时, 结束时间包含end
:param periods: int, 生成的时间序列长度
:param freq: 要生成时间序列的时间间隔
:param out_format: 是否输出格式化后的字符串, 若要输出可指定输出格式. "%Y-%m-%d %H:%M:%S"
:param input_format: 若start或end是字符串且无法自动推断时间格式则需指定格式
:return: [date or date_str]
"""
start = pd.to_datetime("20200918")
end = pd.to_datetime("20200922")
pd.date_range(start, end)
DatetimeIndex(['2020-09-28', '2020-09-29', '2020-09-30', '2020-09-13', '2020-06-01', '2020-06-02'])
例题1:
#例1:
dates = ["20200912","20200922"]
def create_dates(dates):
"""
:param dates: ["20200912","20200922"]
:return:
"""
start = pd.to_datetime(dates[0])
end = pd.to_datetime(dates[1])
dates = pd.date_range(start, end) # 生成时间字符串列表
dates = dates.strftime('%Y%m%d') #格式化时间数据
return list(dates)
print("例1")
print(create_dates(dates))
"""
例1
['20200912', '20200913', '20200914', '20200915', '20200916', '20200917', '20200918', '20200919', '20200920', '20200921', '20200922']
"""
例题2:
#例2
df = pd.DataFrame({'year': [2019, 2020],
'month': [2, 3],
'day': [4, 5]})
pd.to_datetime(df)
print("例2")
print(pd.to_datetime(df))
"""
例2
0 2019-02-04
1 2020-03-05
dtype: datetime64[ns]
"""
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(70)-微信公众平台开发-成为开发者
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(70)-微信公众平台开发-成为开发者
- 一口价!3杂7bc.com16万易主
- Silverlight初级教程-动画
- WCF技术剖析之十:调用WCF服务的客户端应该如何进行异常处理
- [原创-总结]WCF技术剖析系列总结篇
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(63)-WebApi与Unity注入
- 分布式高并发下mysql数据库读写分离
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(64)-补充WebApi与Unity注入-配置文件
- 身临其境的建筑体验:3D打印和人工智能相结合的“星形胶质细胞”
- C语言真的太强大了,C几乎无处不在!
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(65)-MVC WebApi 用户验证 (1)
- 具有依赖关系的并行操作执行
- Silverlight初级教程-绘图布局
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法