如何在python中格式化日期

时间:2017-01-24 16:42:13

标签: python python-2.7 python-2.x

我使用python创建了一个爬虫。

但我的抓取工具以这种格式获取日期:

s = page_ad.findAll('script')[25].text.replace('\'', '"')
s = re.search(r'\{.+\}', s, re.DOTALL).group() # get json data
s = re.sub(r'//.+\n', '', s) # replace comment
s = re.sub(r'\s+', '', s) # strip whitspace
s = re.sub(r',}', '}', s) # get rid of last , in the dict
dataLayer = json.loads(s)
print dataLayer["page"]["adDetail"]["adDate"]

2017-01-1412:28:07

我只想要没有小时的日期(2017-01-14),如果没有空格,如何只获得日期?

4 个答案:

答案 0 :(得分:1)

使用字符串子集:

>>> date ="2017-01-1412:28:07"

>>> datestr= date[:-8]
>>> datestr
'2017-01-14'
>>> 

答案 1 :(得分:0)

试试这段代码:

In [2]: from datetime import datetime

In [3]: now = datetime.now()

In [4]: now.strftime('%Y-%m-%d')
Out[4]: '2017-01-24'

更新

我建议您先将日期解析为datetime对象,然后显示相关信息。

为此,更好的方法是使用库。 我使用dateparser执行此任务,示例用法:

import dateparser
date = dateparser.parse('12/12/12')
date.strftime('%Y-%m-%d')

答案 2 :(得分:0)

由于这不是标准的日期格式,只需切片结束。

st = "2017-01-1412:28:07"
res = st[:10]
print res

>>>2017-01-14

答案 3 :(得分:0)

首先使用datetime将其转换为datetime对象,然后使用stftime()函数根据需要格式化输出:

from datetime import datetime

ad_date = dataLayer["page"]["adDetail"]["adDate"]
print datetime.strptime(ad_date, "%Y-%m-%d%H:%M:%S").strftime("%Y-%m-%d")

这将打印:

2017-01-14

通过使用此方法,它可以让您灵活地显示其他项目,例如在末尾添加%A可以为您提供一周中的某一天:

print datetime.strptime(ad_date, "%Y-%m-%d%H:%M:%S").strftime("%Y-%m-%d %A")

e.g。

2017-01-14 Saturday