`
ryan.liu
  • 浏览: 135791 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Python中的时间日期转换

阅读更多

Python关于时间日期有两个库datetime和time,于是我们要在四种格式之间转换:
datetime.datetime对象 datetime.datetime.now()
time.struct_time对象  time.localtime()
字符串 "2010-12-04T10:30:53"
时间戳 1291433453  (一般我们不关心微秒)

列一下它们的转换方法:

dt = datetime.datetime(2010, 12, 4, 10, 30, 53)
dt = datetime.datetime.strptime("2010-12-04T10:30:53", "%Y-%m-%dT%H:%M:%S")
dt.strftime("%Y-%m-%dT%H:%M:%S")     ->   "2010-12-04T10:30:53"
或者 dt.isoformat().split(".").pop(0)     ->   "2010-12-04T10:30:53"
dt = datetime.datetime.fromtimestamp(1291433453)
(?) dt -> 1291433453

t = time.localtime(1291433453)
t = dt.timetuple()
t = time.strptime("2010-12-04T10:30:53", "%Y-%m-%dT%H:%M:%S")
t.strftime("%Y-%m-%dT%H:%M:%S")     ->   "2010-12-04T10:30:53"
long( time.mktime(t) )  ->  1291433453
(?) t -> dt


可以看出,Python没有提供直接的time.struct_time对象到datetime.datetime对象的转换,也没有直接提供datetime.datetime对象到时间戳的转换。另外,Python的两个strftime ,strptime中都没有时间戳的格式化符号。

对time.struct_time对象到datetime.datetime对象的转换,很容易想到通过字符串形式过渡一下:

dt = datetime.datetime.strptime(t.strftime("%Y-%m-%dT%H:%M:%S"), "%Y-%m-%dT%H:%M:%S")


更好的方式应该是这样

dt = datetime.datetime(*tuple(t)[:6])



对于datetime.datetime对象到时间戳的转换,常用做法是通过time.struct_time对象过渡:

long(time.mktime(dt.timetuple()))


坏处是要同时用到datetime和time两个模块。
其实可以在datetime内部解决,现在给一个三种格式转为时间戳的方法:

def to_timestamp(mytime, format="%Y-%m-%dT%H:%M:%S"):
    import time
    from datetime import datetime
    if isinstance(mytime, time.struct_time):
        return long(time.mktime(mytime))
    elif isinstance(mytime, str):
        mytime = datetime.strptime(mytime, format)
    if isinstance(mytime, datetime):
        #得到一个与时间戳相等的datetime.timedelta对象
        delta = mytime - datetime(1970,1,1)
        utc = delta.days * 86400L + delta.seconds
        #上面求得delta是一个localtime操作,把时区也考虑进去了,我们要还原
        return utc - 8 * 3600 



long(dt.strftime("%s"))
 

 

分享到:
评论
1 楼 ryan.liu 2010-12-07  
引用
另外,Python的两个strftime,strptime中都没有时间戳的格式化符号。

其实是在strptime中没有,应为有替代方法datetime.datetime.strptime()和time.localtime()。
在strftime中有,就是“%s”。
那个datetime对象到时间戳的转换就是 long(dt.strftime("%s"))

相关推荐

    Python-TimeNLP的python3版本中文时间表达词转换

    Python-TimeNLP是一个针对Python3设计的自然语言处理库,特别关注...总之,Python-TimeNLP为处理中文文本中的日期时间信息提供了一个强大且灵活的工具,是Python开发人员在进行自然语言处理任务时值得考虑的一个库。

    Python-ciso8601快速将ISO8601日期时间字符串转换为Python日期时间对象

    在实际开发中,当处理大量ISO8601格式的日期时间字符串时,通过`python-ciso8601`进行转换可以显著减少解析时间,从而提高整体程序的运行效率。特别是在数据清洗、日志分析、网络请求处理等场景下,快速解析日期时间...

    python中时间转换datetime和pd.to_datetime详析

    `datetime` 是Python标准库中的一个模块,它提供了多种日期和时间相关的类。其中最常用的是`datetime` 类,它可以创建表示特定日期和时间的对象。 (1)获取指定的时间和日期: `datetime.datetime(year, month, ...

    python实现将中文日期转换为数字日期

    由于python库中没有函数直接进行转换,因此我写了本篇文章。 2、测试源数据如下 3、代码如下 df = pd.read_excel(r"C:\Users\黄伟\Desktop\chinese_english.xlsx") display(df) def func(x): year = x.split("年...

    Python-erajp将日期转换为日据时代年号

    "Python-erajp"是一个专为处理日本昭和、平成、令和时期(日据时代)日期转换的库。这个库能够帮助开发者将公历日期转换为日本年号表示,这对于需要在日本传统日期格式和公历日期之间进行转换的项目来说非常有用。 ...

    Python-Python轻松处理日期时间

    在Python编程中,日期和时间的操作是至关重要的,无论是在数据分析、日志记录还是系统调度等场景中。Python提供了一些内置的库来处理日期和时间,如`datetime`、`time`以及第三方库如`sdispater-pendulum`。本文将...

    Python-Maya对人类友好的Python日期时间处理库

    Python中的日期和时间处理是许多开发者在编程过程中经常会遇到的任务,尤其在数据分析、日志记录、计划任务等领域。"Maya"是一个强大的Python库,它为处理日期和时间提供了直观且用户友好的接口,旨在让这些操作变得...

    python封装当前日期时间函数(csdn)————程序.pdf

    在本文中,我们将探讨如何使用 Python 封装当前日期时间函数,并介绍相关的知识点。 一、日期和时间处理 在 Python 中,我们可以使用 `datetime` 模块来处理日期和时间相关的操作。`datetime` 模块提供了多种方法...

    python中有关时间日期格式转换问题

    在实际开发中,正确理解和运用这些时间日期转换方法,能够帮助我们更好地处理和分析数据,尤其在数据分析、报表生成和日志处理等场景中,显得尤为重要。不断学习和实践,才能真正掌握Python中时间日期处理的技巧。

    Python转换时间的图文方法

    `struct_time`元组是Python中表示日期和时间的另一种形式,它包含9个元素,分别代表年、月、日、时、分、秒、星期、一年中的第几天以及是否使用夏令时。可以通过索引来访问这些元素,例如`tm_year`、`tm_mon`等。 `...

    Python-delorean解决Python中有关日期处理的棘手问题的库

    7. **与其他库的兼容性**:`delorean`能够无缝集成到其他Python时间处理库,如`pytz`和`arrow`,增强了这些库的功能。 在实际应用中,`delorean`可以帮助开发者处理各种复杂场景,比如日志记录、事件调度、时间序列...

    python中pandas处理日期时间

    在Python的Pandas库中,处理日期和时间数据是一项核心任务,尤其对于数据分析和数据科学项目来说至关重要。Pandas提供了一系列强大的工具来帮助我们轻松地读取、操作和分析日期时间数据。 首先,我们可以通过`pd....

    python中日期和时间格式化输出的方法小结

    本小结将主要介绍`datetime`模块中的`strftime()`和`strptime()`函数,这两个函数能够帮助开发者以指定的格式输出日期和时间,或者将字符串转换成日期时间对象。 `strftime()`函数是用来将日期时间对象格式化为字符...

    Python-快速的RFC3339标准的Python日期时间库

    在Python开发中,日期和时间操作是一个常见的需求,例如记录日志、数据分析、时间戳转换等。Python的标准库`datetime`模块虽然功能强大,但在处理特定格式如RFC3339时,可能需要额外的代码来实现。这个库可能是为了...

    Python 日期与时间转换的方法

    本文主要介绍了Python中日期与时间转换的方法,通过详细的示例和代码帮助读者更好地理解和掌握这些技巧。Python 的 `datetime` 模块提供了强大的功能来处理日期和时间数据。此外,本文还提到了 `dateutil` 模块,该...

    Python-arrow更好的Python日期时间操作类库

    Python中的日期和时间处理是许多编程任务中的常见需求,特别是在数据分析、日志记录和时间相关的算法中。在Python的标准库中,`datetime`模块提供了基本的日期和时间操作,但其API并不总是直观且易用。为了提升开发...

    python获取指定日期范围内的每一天,每个月,每季度的方法

    在Python中获取指定日期范围内的每一天、每个月和每季度的方法,涉及到使用Python标准库中的datetime、...此外,通过实际编写和运行这些函数,可以帮助我们更好地理解和掌握Python在时间日期处理方面的强大功能。

    python 将日期戳(五位数时间)转换为标准时间

    在Python编程中,有时我们需要处理各种时间数据,其中包括将日期戳转换为人类可读的标准日期格式。本篇文章主要探讨如何将五位数日期戳转换为标准时间,这在处理某些特定格式的数据,如MATLAB文件时尤其有用。下面将...

    Python-人性化的格式日期字符串的R包

    R语言中的`strftime`函数是处理日期和时间字符串的强大工具,它可以将日期和时间对象转换为用户自定义的格式。现在,Python社区可能已经创建了一个名为`foRmatDate`的包,目的是为了让Python开发者能够利用R的友好...

Global site tag (gtag.js) - Google Analytics