def date(datestr="", format="%Y-%m-%d"):
from datetime import datetime
if not datestr:
return datetime.today().date()
return datetime.strptime(datestr, format).date()
这是多才多艺的:
如果你没有't pass any arguments it will return today'约会 .
import pandas as pd
dates = ['2015-12-25', '2015-12-26']
# 1) Use a list comprehension.
>>> [d.date() for d in pd.to_datetime(dates)]
[datetime.date(2015, 12, 25), datetime.date(2015, 12, 26)]
# 2) Convert the dates to a DatetimeIndex and extract the python dates.
>>> pd.DatetimeIndex(dates).date.tolist()
[datetime.date(2015, 12, 25), datetime.date(2015, 12, 26)]
Timings
dates = pd.DatetimeIndex(start='2000-1-1', end='2010-1-1', freq='d').date.tolist()
>>> %timeit [d.date() for d in pd.to_datetime(dates)]
# 100 loops, best of 3: 3.11 ms per loop
>>> %timeit pd.DatetimeIndex(dates).date.tolist()
# 100 loops, best of 3: 6.85 ms per loop
def try_strptime(s, fmts=['%d-%b-%y','%m/%d/%Y']):
for fmt in fmts:
try:
return datetime.strptime(s, fmt)
except:
continue
return None # or reraise the ValueError if no format matched, if you prefer
19 回答
我个人喜欢使用
parser
模块的解决方案,这是这个问题的第二个答案并且非常漂亮,因为您不必构造任何字符串文字来使其正常工作 . 但是,一个缺点是它比strptime
的接受答案慢90% .只要你不是一遍又一遍地做这一百万次,我仍然认为
parser
方法更方便,并且会自动处理大部分时间格式 .这里没有提到的东西很有用:为当天添加后缀 . 我将后缀逻辑分离,以便您可以将它用于您喜欢的任何数字,而不仅仅是日期 .
arrow 为日期和时间提供了许多有用的功能 . 这段代码提供了问题的答案,并显示箭头还能够轻松地格式化日期并显示其他区域设置的信息 .
有关更多信息,请参阅http://arrow.readthedocs.io/en/latest/ .
for unix / mysql format 2018-10-15 20:59:29
如果您只想要日期格式,那么您可以通过传递以下各个字段来手动转换它:
您可以传递拆分字符串值以将其转换为日期类型,如:
您将以日期格式获得结果值 .
创建一个小实用程序函数,如:
这是多才多艺的:
如果你没有't pass any arguments it will return today'约会 .
您可以覆盖默认格式的日期格式 .
您可以轻松修改它以返回日期时间 .
datetime Python模块适用于获取日期时间和转换日期时间格式 .
输出:
记住这一点,你不需要再次混淆日期时间转换 .
字符串到datetime对象=
strptime
datetime对象为其他格式=
strftime
Jun 1 2005 1:33PM
等于
%b %d %Y %I:%M%p
所以你需要strptime i-e将
string
转换为产量
如果你有不同的日期格式,你可以使用panda或dateutil.parse
产量
它有助于将字符串转换为日期时间以及时区
Django时区感知日期时间对象示例 .
当你有
USE_TZ = True
时,这种转换对Django和Python非常重要:许多时间戳都有隐含的时区 . 为了确保您的代码在每个时区都有效,您应该在内部使用UTC,并在每次异物进入系统时附加时区 .
Python 3.2:
您可以使用easy_date轻松实现:
查看time模块中的strptime . 它是strftime的反转 .
我已经整理了一个可以转换一些非常简洁的表达式的项目 . 看看 timestring .
以下是一些示例:
pip install timestring
使用第三方dateutil库:
它可以处理大多数日期格式,包括您需要解析的格式 . 它比strptime更方便,因为它可以在大多数时间猜测正确的格式 .
它对于编写测试非常有用,其中可读性比性能更重要 .
你可以安装它:
以下是使用Pandas将格式化为字符串的日期转换为datetime.date对象的两种解决方案 .
Timings
以下是如何转换OP的原始日期时间示例:
使用
to_datetime
可以将许多选项从字符串转换为Pandas时间戳,因此如果您需要任何特殊内容,请检查docs .同样,时间戳有很多properties and methods除了
.date
之外可以访问见my answer .
在实际数据中,这是一个真正的问题:多个,不匹配,不完整,不一致和多语言/区域日期格式,通常在一个数据集中自由混合 . 生产环境 代码失败并不好,更不用说像狐狸一样快乐 .
我们需要尝试...捕获多个日期时间格式fmt1,fmt2,...,fmtn并抑制/处理所有不匹配的异常(来自
strptime()
)(特别是,避免需要yukky n-deep缩进的梯形图try..catch子句) . 来自my solutiondatetime.strptime
是解析的主要例程字符串到日期时间 . 它可以处理各种格式,格式由您提供的格式字符串确定:生成的
datetime
对象是时区的 .链接:
strptime
的Python文档:Python 2,Python 3strptime
/strftime
格式字符串的Python文档:Python 2,Python 3strftime.org也是strftime非常好的参考
笔记:
strptime
= "string parse time"strftime
= "string format time"今天大声发声,你不必在6个月内再次搜索它 .