Python中关于时间的处理

一:Python中有日期(date)和时间(time)数据类型,常用模块:datetime,time,calendar等

1.time模块:

import time
print(time.time()) # 1526604527.9218225 生成当前的时间戳1970年之前不可以
print(time.localtime(time.time())) #time.struct_time(tm_year=2018, tm_mon=5, tm_mday=18, tm_hour=8, tm_min=48, tm_sec=47, tm_wday=4, tm_yday=138, tm_isdst=0)
print(time.localtime()) #输出同上
print(time.mktime(time.localtime())) #1526606315.0 将当前时间转化为时间戳
print(time.strftime("%Y-%m-%d %X", time.localtime())) #2018-05-18 09:20:50 	%X本地相应时间%x本地相应日期

常用时间格式:

%y :两位数的年份,%Y四位数的年份

%m:月份(01-12),%d月内中的一天(0-31)

%w星期(0-6)星期日为0

2.calendar模块

import calendar
cal = calendar.month(2018,5)
print(cal) #输出2018年5月的日历 如下:
      May 2018
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

cal = calendar.calendar(2018) #输出2018年12个月的日历
cal = calendar.isleap(2018) #false 判断是否是闰年,是true,否false
cal = calendar.monthrange(2018,6) #(4, 30) 2018年6月4号是第一个工作日,该月共30天
cal = calendar.monthcalendar(2018,6)#[[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, 0]] 返回某个月以周为单位的序列
3datetime 模块中有以下几个类
datetime.date:表示日期的类。常用的属性有year, month, day;
datetime.time:表示时间的类。常用的属性有hour, minute, second, microsecond;
datetime.datetime:表示日期时间
datetime.timedelta:表示时间间隔,即两个时间点之间的长度
datetime.tzinfo:与时区有关的相关信息
from datetime import date,time,datetime,timedelta #time是datetime模块中的一个类
import time  #python中的time模块
print(date.max,date.min)#9999-12-31 0001-01-01
print(date.today()) #当前日期 2018-05-18
print(date.fromtimestamp(time.time())) #根据给定的时间戳返回一个日期 2018-05-18
tomorrow = date.today().replace(day=19) #2018-05-19
tomorrow1 = date.today().replace(year=2019,month=6,day=19) #2019-06-19
print(tomorrow.weekday()) #5 int类型 周一返回1,周二返回2.。。
print(tomorrow.isoweekday())# 6 ,周日返回1,周一返回2。。。
print(date(2018,5,18).weekday()+1) #5  周一是0,周二是1,所以应该加上1就正好对应周几
#datetime类 结合了date类和time类print(datetime.max) #9999-12-31 23:59:59.999999print(datetime.today()) #2018-05-18 09:46:23.244727print(datetime.fromtimestamp(time.time())) #将时间戳1526608047.8514223转换为2018-05-18 09:47:27.851422print(datetime.weekday(date.today()))dt = datetime.now()print(dt.strftime('%Y-%m-%d %H:%M:%S')) # 2016-07-20 15:16:24 24小时制print(dt.strftime('%Y-%m-%d %I:%M:%S')) #16-07-20 03:16:24 PMprint(dt.strftime('%A'))#Fridayprint(dt.strftime('%a'))#Friprint(dt.strftime('%b'))#May月份 只显示前三个字母print(dt.strftime('%B'))#May 显示完整的月份英文字母print(dt.strftime('%x'))# 05/18/18 日期print(dt.strftime('%X'))# 09:59:19 时间print(dt.strftime('%w'))#5 今天是该周的第5天print(dt.strftime('%j'))#138 今年第138天print(dt.strftime('%U'))#19 该周是今天的第19周

二.pandas中时间的处理

pandas中的to_datetime() 用于处理成组的日期,无论是行索引还是列
pd.to_datetime(row['Date'],format='%Y%m%d')
import numpy as np
import pandas as pd

dates1 = pd.date_range('2018-5-18','2018-5-31')
dates2 = pd.date_range('2018-05-18',periods = 6,freq = 'M') #periods=6就是生成连续的6个日期
# # DatetimeIndex(['2018-05-31', '2018-06-30', '2018-07-31', '2018-08-31',
#                '2018-09-30', '2018-10-31'],
#               dtype='datetime64[ns]', freq='M')
dates3 = pd.date_range('2018-05-18',periods = 6,freq = 'D') #periods=6就是生成连续的6个日期
# DatetimeIndex(['2018-05-18', '2018-05-19', '2018-05-20', '2018-05-21',
#                '2018-05-22', '2018-05-23'],
#               dtype='datetime64[ns]', freq='D')

print(dates3)
dates = ['2017-06-20','2017-06-21',\
         '2017-06-22','2017-06-23','2017-06-24','2017-06-25','2017-06-26','2017-06-27']
ts = pd.Series(np.random.randn(8),index = pd.to_datetime(dates))
print(ts)
# 2017-06-20   -1.147277
# 2017-06-21   -0.463689
# 2017-06-22   -0.536883
# 2017-06-23   -0.296981
# 2017-06-24   -0.129210
# 2017-06-25   -0.164628
# 2017-06-26    0.269732
# 2017-06-27    0.878376



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值