利用python处理日期数据时,对字符串类型日期进行读取和转换

为了将字符串类型日期转化为可供python进行数据分析的数据类型,这里我介绍3种推荐方法,以及1种不太推荐的方法.

推荐方法一:

用datetime类的.strptime()方法,具体使用方式为

from datetime import datetime #从datetime模块中载入datetime类
utc_time_str = '2020-09-11T03:01:48.123Z'#我们的输入字符串日期,精度为毫秒(其中T代表时间,Z表示 
                                         #UCT时间中的0时区)
a = datetime.strptime(utc_time_str, '%Y-%m-%dT%H:%M:%S.%fZ')
#两个参数,一个是字符串日期,还一个是此日期的格式化表达,详见此函数的帮助文档
a # 可以看到原字符串日期被转化为了datetime数据
out:datetime.datetime(2020, 9, 11, 3, 1, 48, 123000)

a.timestamp()#利用此数据的.timestamp可将其转化为时间戳
out:1599793308.123

方法二:

由于每次都编写日期格式定义比较麻烦,可以使用第三方库dateutil
中的parser.parse方法,使用方法非常简单,直接将字符串传入函数即可,dateutil可以解析几乎所有人类能够理解的日期表示形式,使用方法如下:

from dateutil.parser import parse

parse('2020-09-11T03:01:48.123Z')
out: datetime.datetime(2020, 9, 11, 3, 1, 48, 123000, tzinfo=tzlocal())

parse('Jan 9, 2023 23:43')
out: datetime.datetime(2023, 1, 9, 23, 43)

函数的其他参数如dayfirst等,可参考其帮助文档

推荐方法三:

对于数据列表形式的日期组,推荐使用pandas中的to_datetime方法,此方法可识别大部分格式的字符串日期,方法如下:

import pandas as pd
datestrs = ['2020-09-11T03:01:48.123Z', '2020-10-11T03:01:38.123Z']
aa= pd.to_datetime(datestrs)
aa
out: DatetimeIndex(['2020-09-11 03:01:48.123000+00:00', '2020-10-11 03:01:38.123000+00:00'], dtype='datetime64[ns, UTC]', freq=None)

aa[1].timestamp()
out: 1602385298.123

不推荐方法一:

使用time库进行上述转换,具体方法如下

import time
utc_time_str = '2020-09-11T03:01:48.123Z'
time_array = time.strptime(utc_time_str, '%Y-%m-%dT%H:%M:%S.%fZ')
time_array
out: time.struct_time(tm_year=2020, tm_mon=9, tm_mday=11, tm_hour=3, tm_min=1, tm_sec=48, tm_wday=4, tm_yday=255, tm_isdst=-1)

time.mktime(time_array)
out: 1599793308.0

可以看到将字符串日期转化为time类型结构化时间表示后,秒的小数部分被舍去了,因此会造成精度上的丢失.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值