中国移动 Zookeeper安装 另类堆栈 Java包装类 svn SCI Gradle date go 网络营销推广 mono Amaze UI vue前端 vue引入组件 git视频教程 teamviewer验证被拒绝 matlab 图像识别 java解析json数组 mysql数据库驱动 mysql自连接 axure时间选择控件 python爬虫包 小程序下拉刷新样式 flutter 缺点 python连接mysql mysql数据库 郑州普通话 pythonfor循环 python手册 python返回值 javarandom java学习文档 java安装步骤 javaenum 离散数学及其应用 凯立德地图免费下载 高等数学同济第七版 影视后期软件 地球末日攻略 cfqq网吧任务
当前位置: 首页 > 学习教程  > 编程语言

python---时间戳操作

2020/11/4 15:05:04 文章标签:

python 数据分析之 时间戳操作 第一章 Python 数据分析之pandas的使用 第二章 Python 数据分析之 时间戳操作 第二章 python 数据分析之numpy的使用 第三章 python 数据可视化之matplotlib的使用 [TOC](Python 数据分析之 时间戳操作) 一、 时间戳的基础操作 datetime 数据包…

python 数据分析之 时间戳操作

第一章 Python 数据分析之pandas的使用
第二章 Python 数据分析之 时间戳操作
第二章 python 数据分析之numpy的使用
第三章 python 数据可视化之matplotlib的使用


@[TOC](Python 数据分析之 时间戳操作)

一、 时间戳的基础操作

  1. datetime 数据包
  2. time 数据包

1.1 数据类型

  1. 时间序列的数据类型:
  • Datetime Object / String / timestamp / time tuple 代码包括两部分

  • 时间数据的获取

  • 时间数据的类型的相互转化

dataFrame 中 index 为时间戳可以提取
data = data_use[data_use.index.hour.values== 8] # 提取每天8点的小时数据

data = data_use[data_use.index.day.values== 8] # 提取每月8号的小时数据

data = data_use[data_use.index.month.values== 8] # 提取8月份的小时数据

data = data_use[data_use.index.year.values==2017]  # 提取2017年的所有数据
from datetime import datetime

datetime.strftime('%' ) %后面跟一个控制字符

1.2 格式符 说明

%a:星期的英文单词的缩写:如星期一, 则返回 Mon

%A:星期的英文单词的全拼:如星期一,返回 Monday

%b:月份的英文单词的缩写:如一月, 则返回 Jan

%B:月份的引文单词的缩写:如一月, 则返回January
%c:返回datetime的字符串表示,如03/08/15 23:01:26

%d:返回的是当前时间是当前月的第几天

%f:微秒的表示: 范围: [0,999999]

%H:以24小时制表示当前小时

%I:以12小时制表示当前小时

%j:返回 当天是当年的第几天 范围[001,366]

%m:返回月份 范围[0,12]

%M:返回分钟数 范围 [0,59]

%P:返回是上午还是下午–AM or PM

%S:返回秒数 范围 [0,61]。。。手册说明的

%U:返回当周是当年的第几周 以周日为第一天

%W:返回当周是当年的第几周 以周一为第一天

%w:当天在当周的天数,范围为[0, 6],6表示星期天

%x:日期的字符串表示 :03/08/15

%X:时间的字符串表示 :23:22:08

%y:两个数字表示的年份 15

%Y:四个数字表示的年份 2015

%z:与utc时间的间隔(如果是本地时间,返回空字符串)

%Z:时区名称(如果是本地时间,返回空字符串)

二、datetime 包

2.1 引入包库

import datetime

2.2 时间数据的获取部分

# 获取当前时间点
datetime.datetime.now()
# datetime.datetime(2019, 7, 23, 10, 31, 33, 859647)
### #  获取当天时间
datetime.date.today()
#  datetime.date(2019, 7, 23)

2.2 时间差操作 datetime.timedelta

datetime.timedelta(perm)可以直接进行+、-操作

perm: datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, 
			minutes=0, hours=0, weeks=0)
   1. days=N,天;
   2. seconds=N,秒
   3.  microseconds,毫秒
   4.  minutes,分钟
   5.  hours,小时
   6.  weeks,周 
# 获取前天的时间
# datetime.data.today()+datetime.timedelta(days=N) 
# 获取前N天的消息
datetime.date.today() + datetime.timedelta(days=1) 
#  datetime.date(2019, 7, 24)
# 获取当前开始时间
datetime.datetime.combine(datetime.date.today(), datetime.time.min)
#  datetime.datetime(2019, 7, 23, 0, 0)
# 获取当天结束时间
datetime.datetime.combine(datetime.date.today(), datetime.time.max)
#   datetime.datetime(2019, 7, 23, 23, 59, 59, 999999)
# 获取两个时间之间的时间差,之间的秒数
senconds_diff=(datetime.datetime(2020,1,13,12,0,0) - datetime.datetime.now()).total_seconds()

# 获取时间戳相差月数量
(datetime.datetime(2020,1,13,12,0,0) - datetime.datetime.now()).total_month() 

(endTime2 - startTime2).seconds :相差多少秒

# senconds_diff//60 ---->分钟数
# senconds_diff//3600 ---->对应小时数
# senconds_diff//3600//24 ---->对应天数

#   15038213.602988

2.3 时间戳互换

# 当前时间对应时间戳
new_stamp = datetime.now().timestamp()
# 本地时间
datetime.fromtimestamp(now_stamp)
# UTC标准时间
datetime.utcfromtimestamp(new_stamp)
# 获取本周最后一天
# datetime.date : 获取年月日
# datetime.datetime :获取年月日小时分钟秒
today = datetime.date.today()
# .weekday()
print(today)
# 2019-07-23
sundays = today+datetime.timedelta(6 - today.weekday())
sundays
# datetime.date(2019, 7, 28)
# 获取本月最后一天
import calendar # 添加日历
today = datetime.date.today()
print(today)
# 2019-07-23
a,last_day_num = calendar.monthrange(today.year, today.month)
a,last_day_num
last_day = datetime.date(today.year,today.month,last_day_num)
last_day
#   datetime.date(2019, 7, 31)
# 获取上个月的最后一天
today = datetime.date.today()
first = datetime.date(day=1, month=today.month, year=today.year)# 本月第一天
lastMonth = first - datetime.timedelta(days=1)# 本月-一天
lastMonth
# datetime.date(2019, 6, 30)

2.4 数据关系的相互转化

2.4.1 datetime <=> string
# 关系转换
1. datetime -> string
string0 = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print(type(string0))
# <class 'str'>
2. datetime<- string
datetime0= datetime.datetime.strptime("2019-12-31 18:20:10",'%Y-%m-%d %H:%M:%S')
print(type(datetime0))
#  <class 'datetime.datetime'>

3. datetime1 = datetime.datetime.strptime("2020-04-23T02:00:00Z","%Y-%m-%dT%H:%M:%SZ") 
# 将str转化为2020-04-23 02:00:00 时间戳
2.4.2 datetime <=> timetuple
import time
# 1.datetime -> timetuple
now = datetime.datetime.now().timetuple()
print(now,type(now))
print('=='*30)

# 2.datetime <- timetuple:需要分两步进行,timetuple--> timestap-->datetime
timestap = time.mktime(now)
print(timestap,type(timestap))
#  time.struct_time(tm_year=2019, tm_mon=7, tm_mday=23, tm_hour=11, tm_min=29, tm_sec=25, tm_wday=1, tm_yday=204, tm_isdst=-1) <class 'time.struct_time'>
timetuple = datetime.datetime.fromtimestamp(timestap)
print('=='*30)
# ============================================================
print(timetuple,type(timetuple))
# # 1563852565.0 <class 'float'>    2019-07-23 11:29:25 <class 'datetime.datetime'>
2.4.3 datetime <=> date
# 1.datetime -> date
date = datetime.datetime.now().date()
print(date,type(date))
#   2019-07-23 <class 'datetime.date'>
# 2. date -> datetime
today = datetime.date.today() # date
datetime1 = datetime.datetime.combine(today,datetime.time())
print(datetime1,type(datetime1))
# 2019-07-23 00:00:00 <class 'datetime.datetime'>
datetime2 = datetime.datetime.combine(today,datetime.time.min)
print(datetime2,type(datetime2))
#  2019-07-23 00:00:00 <class 'datetime.datetime'>
2.4.4 datetime <=> timestamp
# 1.datetime -> timestamp
now = datetime.datetime.now()
timestaps = time.mktime(now.timetuple())
print(timestaps)
# 1563859197.0
# 2. timestamp ->datetime
datetime2 = datetime.datetime.fromtimestamp(timestaps)
print(datetime2)
#     2019-07-23 13:19:57

2.5 datetime数据修改

#时间修改
datetime.datetime.replace(hour=23,minute=0,second=0,microsecond=0)  
def get_cache_times():
    """根据日期获取当天23时间"""
    date_23 = datetime.now().replace(hour=23,minute=0,second=0,microsecond=0)
    before_data_23 = date_23 - timedelta(days=29)
    before_0 = before_data_23.replace(hour=0,minute=0,second=0,microsecond=0)
    return date_23,before_0
ts = pd.date_range('2019-10-24 00:00','2019-10-24 23:00',freq='H')
ts_day =pd.to_datetime([t.replace(hour=0) for t in ts])
# 输出结果
# DatetimeIndex(['2019-10-24', '2019-10-24', #'2019-10-24', '2019-10-24',
#              '2019-10-24', '2019-10-24', 
#             '2019-10-24', '2019-10-24',
#               '2019-10-24', '2019-10-24', '2019-10-24', '2019-10-24',
#               '2019-10-24', '2019-10-24', '2019-10-24', '2019-10-24',
#              '2019-10-24', '2019-10-24', '2019-10-24', '2019-10-24',
#               '2019-10-24', '2019-10-24', '2019-10-24', '2019-10-24'],
#              dtype='datetime64[ns]', #freq=None)

2.6 获取当天的时间:

# 1) 获取当前日期和时间
today = datetime.today()    # 返回当前时间时分秒都为0
print("当前时间")
print(today) 
# datetime.datetime(2019, 11, 4, 16, 27, 20, 826398)
now = datetime.now()  # 返回当前日期和时间和today相同
now.hour # 时
now.minute # 分
now.isoweekday()# 返回的1-7代表周一--周日;
now.weekday()# 返回的0-6代表周一--到周日
# 而标准格式种%w 1-6表示周一--周六,0代表周日
print( today1 )
today2 = datetime.utcnow()  # 返回当前东八区时间就是比当时时间少8个小时
print(today2)

三、time 包

3.1 引入包

improt time
from time import time, localtime, sleep

3.2 time localtime() 方法

作用: 格式化本地时间
localtime() == localtime(time()) :结果相同
localtime([sec]) : 输入参数以秒计算,如果没有输入则为本地当前时间

返回结果为:time.struct_time(tm_year=2020, tm_mon=1, tm_mday=9, tm_hour=13, tm_min=37, tm_sec=47, tm_wday=3, tm_yday=9, tm_isdst=0)
参数解释:
int tm_sec; /* 秒 – 取值区间为[0,59] */
int tm_min; /* 分 - 取值区间为[0,59] */
int tm_hour; /* 时 - 取值区间为[0,23] */
int tm_mday; /* 一个月中的日期 - 取值区间为[1,31] */
int tm_mon; /* 月份(从一月开始,0代表一月) - 取值区间为[0,11] */
int tm_year; /* 年份,其值等于实际年份减去1900 */
int tm_wday; /* 星期 – 取值区间为[0,6],其中0代表星期一,1代表星期二,以此类推 */
int tm_yday; /* 从每年的1月1日开始的天数 – 取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推 */
int tm_isdst; /* 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的时候,tm_isdst为0;不了解情况时,tm_isdst()为负。

3.3 time gmtime()方法

作用: 将时间戳转化为UTC(0时区)的struct_time
格式: time.gmtime([sec]),sec为转换为time.struct_time类型的对象的秒数
结果: 返回的结果和time localtime() 的结果相同,返回参数也相同

3.4 time mktime() 方法

作用:返回的结果与localtime和gmtime相反,返回表示时间的浮点数
格式: time.mktime(t),t 结构化的时间或者完整的9位元组元素
# 例子:
t = (2020, 2, 17, 17, 3, 38, 1, 48, 0)
secs = time.mktime(t)
print(secs)
print("asctime(localtime(secs)): %s" % time.asctime(time.localtime(secs)))

# 结果
#1581930218.0 浮点数
#asctime(localtime(secs)): Mon Feb 17 17:03:38 #2020

mktime(gmtime(time())) # 可以相互转化

3.5 time strftime() / time strptime() 方法

strftime(): 结果为字符串

函数接收以时间元组,并返回以可读字符串表示的当地时间,格式由参数format决定

import time
print(time.time())
print(time.localtime(time.time()))
time.strftime("%b %d %Y %H:%M:%S",time.localtime(time.time()))

#1578550655.728434
#time.struct_time(tm_year=2020, tm_mon=1, #tm_mday=9, tm_hour=14, tm_min=17, tm_sec=35, #tm_wday=3, tm_yday=9, tm_isdst=0)

#'Jan 09 2020 14:17:35'

strptime() : 结果为时间元组
函数接受字符串,并返回对应的时间元组

import time
#print(time.time())
#print(time.localtime(time.time()))

# str --> tuple time 的时间格式需要对应
str_time = time.strftime("%b %d %Y %H:%M:%S",time.localtime(time.time()))
tuple_time = time.strptime(str_time,"%b %d %Y %H:%M:%S")

str_time1 = time.strftime("%y-%m-%d %H:%M:%S",time.localtime(time.time()))
tuple_time1 = time.strptime(str_time1,"%y-%m-%d %H:%M:%S")
print(tuple_time)
print(tuple_time1)

# 结果
#1578551229.4638183
#time.struct_time(tm_year=2020, tm_mon=1, #tm_mday=9, tm_hour=14, tm_min=27, tm_sec=9, #tm_wday=3, tm_yday=9, tm_isdst=0)

#time.struct_time(tm_year=2020, tm_mon=1, #tm_mday=9, tm_hour=14, tm_min=27, tm_sec=9, #tm_wday=3, tm_yday=9, tm_isdst=-1)
#time.struct_time(tm_year=2020, tm_mon=1, #tm_mday=9, tm_hour=14, tm_min=27, tm_sec=9, #tm_wday=3, tm_yday=9, tm_isdst=-1)


本文链接: http://www.dtmao.cc/news_show_350319.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?