相关疑难解决方法(0)

将字符串转换为datetime

简短而简单.我有一个巨大的日期时间列表,像这样的字符串:

Jun 1 2005  1:33PM
Aug 28 1999 12:00AM
Run Code Online (Sandbox Code Playgroud)

我将把它们推回到数据库中的正确日期时间字段中,因此我需要将它们变成真正的日期时间对象.

任何帮助(即使它只是在正确的方向踢)将不胜感激.

编辑:这是通过Django的ORM,所以我不能使用SQL来进行插入转换.

python datetime

2035
推荐指数
20
解决办法
273万
查看次数

如何在python中识别未知的日期时区时区

我需要做什么

我有一个时区不知道的日期时间对象,我需要添加一个时区,以便能够将其与其他时区感知日期时间对象进行比较.我不想将我的整个应用程序转换为时区,而不是因为这个遗留案例.

我试过的

首先,要证明问题:

Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import datetime
>>> import pytz
>>> unaware = datetime.datetime(2011,8,15,8,15,12,0)
>>> unaware
datetime.datetime(2011, 8, 15, 8, 15, 12)
>>> aware = datetime.datetime(2011,8,15,8,15,12,0,pytz.UTC)
>>> aware
datetime.datetime(2011, 8, 15, 8, 15, 12, tzinfo=<UTC>)
>>> aware == unaware
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can't compare offset-naive and offset-aware …
Run Code Online (Sandbox Code Playgroud)

python timezone datetime

446
推荐指数
10
解决办法
27万
查看次数

无法减去offset-naive和offset-aware datetimes

timestamptz在PostgreSQL中有一个时区感知字段.当我从表中提取数据时,我想立即减去时间,以便我可以得到它的年龄.

我遇到的问题是,无论是datetime.datetime.now()datetime.datetime.utcnow()似乎回到时区不知道时间戳,这导致我得到这个错误:

TypeError: can't subtract offset-naive and offset-aware datetimes 
Run Code Online (Sandbox Code Playgroud)

有没有办法避免这种情况(最好不使用第三方模块).

编辑:感谢您的建议,但是尝试调整时区似乎给了我错误..所以我只是在PG中使用时区不知道的时间戳并始终使用:

NOW() AT TIME ZONE 'UTC'
Run Code Online (Sandbox Code Playgroud)

这样我的所有时间戳都默认为UTC(尽管这样做更烦人).

python postgresql timezone datetime

271
推荐指数
9
解决办法
19万
查看次数

如何在Python中获得UTC时间?

我在StackExchange上搜索了一堆解决方案,但没有什么是我需要的.在JavaScript中,我使用以下内容来计算自1970年1月1日以来的UTC时间:

function UtcNow() {
    var now = new Date();
    var utc = Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds(), now.getUTCMilliseconds());
    return utc;
}
Run Code Online (Sandbox Code Playgroud)

什么是等效的Python代码?

python datetime

94
推荐指数
8
解决办法
16万
查看次数

在Python中生成RFC 3339时间戳

我正在尝试在Python中生成RFC 3339 UTC时间戳.到目前为止,我已经能够做到以下几点:

>>> d = datetime.datetime.now()
>>> print d.isoformat('T')
2011-12-18T20:46:00.392227
Run Code Online (Sandbox Code Playgroud)

我的问题是设置UTC偏移量.

根据该文件,在类方法datetime.now([tz]),有一个可选的tz参数,其中tz must be an instance of a class tzinfo subclass,和datetime.tzinfoan abstract base class for time zone information objects.

这就是我迷路的地方 - 为什么tzinfo是一个抽象类,我该如何实现呢?


(注意:在PHP中它很简单timestamp = date(DATE_RFC3339);,这就是为什么我无法理解为什么Python的方法如此错综复杂......)

python datetime iso8601 rfc3339

51
推荐指数
5
解决办法
4万
查看次数

如何获取系统时区设置并将其传递给pytz.timezone?

我们可以使用time.tzname获取本地时区名称,但该名称与之不兼容pytz.timezone.

实际上,返回的名称time.tzname含糊不清.此方法('CST', 'CST')在我的系统中返回,但"CST"可以指示四个时区:

  • 中部时区(北美) - 在北美的中部时区观察
  • 中国标准时间
  • 中原标准时间 - "中原标准时间"一词现在在台湾很少使用
  • 澳大利亚中央标准时间(ACST)

python timezone pytz

51
推荐指数
4
解决办法
6万
查看次数

如何获得给定时区的"午夜"UTC时间?

我现在能想到的最好的就是这种怪异:

>>> datetime.utcnow() \
...   .replace(tzinfo=pytz.UTC) \
...   .astimezone(pytz.timezone("Australia/Melbourne")) \
...   .replace(hour=0,minute=0,second=0,microsecond=0) \
...   .astimezone(pytz.UTC) \
...   .replace(tzinfo=None)
datetime.datetime(2008, 12, 16, 13, 0)
Run Code Online (Sandbox Code Playgroud)

即,用英语,获取当前时间(以UTC为单位),将其转换为其他时区,将时间设置为午夜,然后转换回UTC.

我不只是使用now()或localtime(),因为它会使用服务器的时区,而不是用户的时区.

我不禁感到我错过了什么,有什么想法吗?

python timezone datetime utc pytz

42
推荐指数
2
解决办法
5万
查看次数

在python中转换时区的意外结果

我试图理解为什么在将时区转换为UTC时我得到这些结果:

In [74]: d1 = datetime(2007, 12, 5, 6, 30,tzinfo=pytz.timezone('US/Pacific'))
In [75]: d1
Out[75]: datetime.datetime(2007, 12, 5, 6, 30, tzinfo=<DstTzInfo 'US/Pacific' LMT-1 day, **16:07:00 STD**>)
In [76]: d1.astimezone(pytz.utc)
Out[76]: datetime.datetime(2007, 12, 5, 14, 23, tzinfo=<UTC>)
Run Code Online (Sandbox Code Playgroud)

为什么早上6:30成为下午2:23?

另一方面,如果我使用以下方法,我得到预期的结果:

In [90]: d2 = datetime(2007, 12, 5, 6, 30)
In [91]: uspac = pytz.timezone('US/Pacific')
In [92]: d2_aware = uspac.localize(d2)
In [94]: d2_aware.astimezone(pytz.utc)
Out[94]: datetime.datetime(2007, 12, 5, 14, 30, tzinfo=<UTC>)
Run Code Online (Sandbox Code Playgroud)

python pytz

36
推荐指数
3
解决办法
8704
查看次数

使用pytz的Datetime时区转换

这只是另一篇文章pytz.

有两个函数可以在两个时区之间转换日期时间对象.第二个功能适用于所有情况.第一个函数在两种情况下失败,(3)和(4).类似的SO帖子没有这样的问题.任何解释基础上的区别localize(datetime.datetime)replace(tzinfo)将是一个很大的帮助.

>>> from dateutil.parser import parse
>>> import pytz
Run Code Online (Sandbox Code Playgroud)

第一个功能(越野车)

以下功能使用datetime.datetime.replace(tzinfo).

def buggy_timezone_converter(input_dt, current_tz='UTC', target_tz='US/Eastern'):
    '''input_dt is a datetime.datetime object'''
    current_tz = pytz.timezone(current_tz)
    target_tz = pytz.timezone(target_tz)
    target_dt = input_dt.replace(tzinfo=current_tz).astimezone(target_tz)
    return target_tz.normalize(target_dt)
Run Code Online (Sandbox Code Playgroud)

现在注意四个日期时间转换.

(1)从UTC到EST - 好的

>>> buggy_timezone_converter(parse('2013-02-26T04:00:00'))
Out[608]: datetime.datetime(2013, 2, 25, 23, 0, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>)
Run Code Online (Sandbox Code Playgroud)

(2)从UTC到EDT - 好的

>>> buggy_timezone_converter(parse('2013-05-26T04:00:00'))
Out[609]: datetime.datetime(2013, 5, 26, 0, 0, tzinfo=<DstTzInfo 'US/Eastern' EDT-1 day, 20:00:00 DST>)
Run Code Online (Sandbox Code Playgroud)

(3)从EST到UTC - 不行.时间偏移是4小时56分钟.它应该是5个小时 …

python timezone datetime pytz python-2.7

11
推荐指数
1
解决办法
4390
查看次数

如何在python中将datetime转换为整数

如何在python中将YYYY-MM-DD hh:mm:ss格式转换为整数?例如2014-02-12 20:51:14 - >到整数.

我知道如何只转换hh:mm:ss而不是yyyy-mm-dd hh:mm:ss

def time_to_num(time_str):
    hh, mm , ss = map(int, time_str.split(':'))
    return ss + 60*(mm + 60*hh)
Run Code Online (Sandbox Code Playgroud)

python datetime integer converter

10
推荐指数
4
解决办法
6万
查看次数

标签 统计

python ×10

datetime ×8

timezone ×5

pytz ×4

converter ×1

integer ×1

iso8601 ×1

postgresql ×1

python-2.7 ×1

rfc3339 ×1

utc ×1