Python中time日期、时间格式转换

news/2024/7/4 15:21:00

     在我们日常的数据采集中,时间time的重要性毋庸置疑的,因为它是衡量采集到的信息是否具有正确时效性的唯一因素。如果我们采集到的信息对于客户来说已经是过期的信息,这对于客户没有使用的价值,影响客户使用。

所以我们今天就来说说在日常采集中遇到的时间如何正确采集,保证信息的时效性。

1>.首先我们要获取当前的时间,才能有效的判断信息的时效性。

import datetime
#获取当前时间
gtime = datetime.datetime.now()
# #获取当前时间的年 月 日.day
year = datetime.datetime.now().year
month = datetime.datetime.now().month
day = datetime.datetime.now().day

2>.时间的格式化。在采集外文网站中常会遇到(Mar 09,2018\ Thu Jun 22 00:00:00 CST 2017),对照着进行匹配

    %a星期的简写。如 星期三为Web
    %A星期的全写。如 星期三为Wednesday
    %b月份的简写。如4月份为Apr
    %B月份的全写。如4月份为April
    %c: 日期时间的字符串表示。(如: 04/07/10 10:43:39%d: 日在这个月中的天数(是这个月的第几天)
    %f: 微秒(范围[0,999999])
    %H: 小时(24小时制,[0, 23])
    %I: 小时(12小时制,[0, 11])
    %j: 日在年中的天数 [001,366](是当年的第几天)
    %m: 月份([01,12])
    %M: 分钟([00,59])
    %p: AM或者PM
    %S: 秒(范围为[00,61],为什么不是[00, 59],参考python手册~_~%U: 周在当年的周数当年的第几周),星期天作为周的第一天
    %w: 今天在这周的天数,范围为[0, 6],6表示星期天
    %W: 周在当年的周数(是当年的第几周),星期一作为周的第一天
    %x: 日期字符串(如:04/07/10%X: 时间字符串(如:10:43:39%y: 2个数字表示的年份
    %Y: 4个数字表示的年份
    %z: 与utc时间的间隔 (如果是本地时间,返回空字符串)
    %Z: 时区名称(如果是本地时间,返回空字符串)
    %%: %% => %

 

#Mar 09,2018\ Thu Jun 22 00:00:00 CST 2017
c_time = 'Mar 09,2018'
print(type(c_time))  #查看类型是--<str>
ctime = datetime.datetime.strptime(c_time,"%b %d,%Y")
print(ctime)
print(type(ctime))  #查看类型是--<class 'datetime.datetime'>

3>.借助正则来提升匹配率

ctime = data.xpath('''//span[@class="time"]''').regex('(\d+-\d+-\d+ \d+:\d+:\d+|\d+-\d+-\d+ \d+:\d+|\d+-\d+-\d+|\d+-\d+ \d+:\d+)').datetime()

4>.对于时间里面包含汉字(年、月、日)(刚刚、分钟前、小时前、天前)

  4.1.时间里面包含年、月、日---2018年3月15日 12:25

    import htmlparser  #导包
    
    ctime = htmlparser.Parser(data.xpath('''//span[@class="time"]''').text().replace('', '-').replace('', '-').replace('', '')).datetime()

  4.2.时间里面包含刚刚、分钟前、小时前、天前

    ctime = data.xpath('''//span[@class="topic_time"]/text()''').text().strip()
    if "刚刚" in ctime:
        ctime = gtime - datetime.timedelta(minutes=1)
    elif "分钟前" in ctime:
        ctime = re.search(r'\d+', ctime).group()
        ctime = gtime - datetime.timedelta(minutes=int(ctime))
    elif "小时前" in ctime:
        ctime = re.search(r'\d+', ctime).group()
        ctime = gtime - datetime.timedelta(hours=int(ctime))
    elif "天前" in ctime:
        ctime = re.search(r'\d+', ctime).group()
        ctime = gtime - datetime.timedelta(days=int(ctime))
    else:
        # return None
        ctime = htmlparser.Parser(ctime).datetime()

5>.对于正文里面没有时间的,查看是否url里面含有时间的信息  http://www.shanxi.gov.cn/sq/dwjl/gjjmlw/201802/t20180208_396922.shtml

import re

post_url = 'http://www.shanxi.gov.cn/sq/dwjl/gjjmlw/201802/t20180208_396922.shtml'
c_time = re.search('''t(\d{8})_''', post_url).group(1)
ctime = datetime.datetime.strptime(c_time, "%Y%m%d") - datetime.timedelta(0, 3600 * 8)

6>.时间戳的转化(如果采集的内容里面没有时间,可以查找类似1548906627这样的一串数,打开http://tool.chinaz.com/Tools/unixtime.aspx,测试一下是否是时间戳格式的)
如果确定是时间戳格式的

    ===============时间戳格式转换==============
    c_time1 = '获取到的时间戳'
    ctime = datetime.datetime.utcfromtimestamp(int(c_time1))

最后,此内容为自己整理所得,如有不适合你的情况,请另行其它方法解决。




转载于:https://www.cnblogs.com/swda/p/10342908.html


http://www.niftyadmin.cn/n/1897058.html

相关文章

mybatis if test 相等的情况怎样动态拼接sql

今天程序须要依据前台的传过来的状态推断在数据库里是取 where a>b 还是 a<b 还是 a0 的情况 搞了一下午最后试了下 在if 里面拼接 #{status}#{status} 一切ok了 具体代码例如以下 <if test" status1">and inv.security_inventory < inv.actu…

软件开发软技能:“从无意识的故障中学习”模式

\本文要点\\软技术模式是经证实可解决常见问题的个人和人际交互行为的组合。\\t系统故障几乎不可能完全避免&#xff0c;但同时每次故障也都带来了改进的机会。\\t“从无意识的故障中学习”模式指导我们在故障事件后改进系统的弹性。\\t该模型有四个独立的步骤&#xff1a;识别…

IBM新建区块链创新中心,为什么选中新加坡?

据路透社报道&#xff0c;IBM计划在新加坡与当地政府合作建立一个区块链技术创新中心&#xff0c;后者正竭力想要成为亚洲的主要金融科技&#xff08;fintech&#xff09;中心。 接下来&#xff0c;IBM将会和新加坡主要的经济规划机构——新加坡经济发展署 &#xff08;EDB&…

Xcode 自定义工程中的头文件信息

2019独角兽企业重金招聘Python工程师标准>>> 自定义工程中的头文件信息 我们打开 Xcode 工程的时候新建的文件顶部的信息非常的少且不是我们需要展示信息&#xff0c;看到很多的 GitHub 项目的顶部的头信息还是非常的花哨&#xff0c;所以在此记录如何写自定义模版的…

cefglue Flash

用户计算机必须安装Adobe Flash组件才能播放动画&#xff0c;关于这点&#xff0c;找到3个解决方案&#xff1a; 方法一&#xff1a;安装NPAPI版本的Flash组件&#xff08;非IE版&#xff09;之后&#xff0c;才能播放动画。访问 http://get.adobe.com/cn/flashplayer/otherver…

35. 系统上下文 - 日期

开篇词 Linux 提供了允许我们查看系统日期信息的命令&#xff0c;借助这些命令&#xff0c;我们可以快速获取日期相关的信息。 系统日期 我们可以使用 date 命令来获取或设置系统日期&#xff1a; date本地日期时间 date %c本地日期 date %x本地周天 - 缩写 date %a本…

浅谈myeclipse2015做cordova/phonegap开发

近期公司项目经理要求用cordova写安卓程序&#xff0c;之前对cordova什么都不懂&#xff0c;然后从网上搜啊搜&#xff0c;好歹有所了解了&#xff0c;感觉做web开发的比較合适&#xff0c;属于三种开发模式的第三种. myeclipse2015有个优点就是集成了phonegap的开发&#xff…

python汉诺塔问题

2019独角兽企业重金招聘Python工程师标准>>> # 汉诺塔问题 count 0 # 参数 n:几个圆盘 src:起点柱子 dst:终点柱子 mid:中转柱子 # 返回值&#xff1a;几号圆盘&#xff1a;起点柱子->终点柱子 def hanoi(n,src,dst,mid): # n:几个圆盘 src:起点柱子 dst:终点柱…