在我们日常的数据采集中,时间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)) #查看类型是--

ctime = datetime.datetime.strptime(c_time,"%b %d,%Y")

print(ctime)

print(type(ctime)) #查看类型是--

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

python时间格式转换为美式日期,Python中time日期、时间格式转换相关推荐

  1. java中输入日期_Java中的日期操作

    在日志中常用的记录当前时间及程序运行时长的方法: public void inject(Path urlDir) throws Exception { SimpleDateFormat sdf = n ...

  2. python、pandas、Excel、Powerbi中对日期的处理方法

    主要针对datetime类型的时间 以下为用举例的方式来说明在不同场景下,使用不同工具处理时间的方法 1.python对日期的处理 功能1:日期相减后天数差值和秒差值 dt = datetime(20 ...

  3. java对象转json字符串日期格式_fastJSON字符串类型数据中的日期转换为Java bean的日期对象...

    fastJSON字符串类型数据中的日期转换为Java bean的日期对象 Person.java import java.io.Serializable; import java.util.Date; ...

  4. 将PDF和Gutenberg文档格式转换为文本:生产中的自然语言处理

    Estimates state that 70%–85% of the world's data is text (unstructured data). Most of the English an ...

  5. jquery 时间相减获取天数_Js中处理日期加减天数

    Js的处理日期还是很方便的. 一. 格式化日期为2017-07-04的格式 function formatTime(date) { var year = date.getFullYear(); var ...

  6. java如何获取当天日期_Java 中获取当前时间

    一. 获取当前系统时间和日期并格式化输出: import java.util.Date; import java.text.SimpleDateFormat; public class NowStri ...

  7. mysql获取前一天日期_mysql中获取当前时间的前一天

    在日志中,经常需要获取当天的或者前一天的数据 当前时间前一天 :SELECT DATE_SUB(CURDATE(),INTERVAL 1 DAY); 当天: select * from user wh ...

  8. java中struts2日期_Struts2中Date日期转换的问题

    今天跑程序的时候莫名其妙的出现了下面的一个异常: java.lang.NoSuchMethodException:com.ca.agent.model.mybatis.ApprovalInforCan ...

  9. java 日期_Java中的日期操作

    Date : getTime() .setTime() SimpleDateFormate :   Formate(Date). parse(String s) Calendar : getInsta ...

最新文章

  1. Mysql 递归获取多重数组数据
  2. python语言实战-别找了,这是 Pandas 最详细教程了
  3. Redis学习笔记(八)——持久化
  4. html 启动bat脚本,Windows开机自启动bat脚本设置方法
  5. Linux X Window 与命令行的切换
  6. Lintcode Subarray Sum Closest
  7. 使用正则表达式更改编译版本号
  8. kotlin中判断字符串_Kotlin程序查找字符串中字符的频率
  9. 前端埋点的缺点_【埋点学习埋点质量】埋点的框架设计及其准确性
  10. 0497计算机组成原理在线作业,0497《 综合实践活动课程设计》20秋西南大学在线作业答案...
  11. Android ActivityManager
  12. 判断字符串是否为null、是否为空
  13. github的健步如飞
  14. Oracle中 Alter Table 语句的使用
  15. 获取data-*属性值
  16. 永强教你加解密:对称篇(一)
  17. 【计算机网络:自顶向下方法】期末复习总结(USTC 2020秋 zq班)
  18. 告别笨重卡慢的PyCharm,使用Nodepad++ python编程
  19. Windows防火墙的原理及其作用
  20. PowerPoint201设置特殊边框技巧精美ppt模板下载

热门文章

  1. nextcloud如何填写数据库_nextcloud安装教程
  2. Visual Code Python Snippet 自定义代码片段及套用模板
  3. [读书笔记]九月读书笔记
  4. HTML5基础----文字特效
  5. 中国减速机行业发展动态及投资前景分析报告2022-2028年
  6. 社区养成网页游戏大全
  7. soundex 算法
  8. 详解sklearn中的make_moons函数
  9. c语言结构类型ppt,C语言 第10章 结构类型与其他构造类型.ppt
  10. 懒人笔记-mupdf篇<ubuntu>