如何将本地时间的日期时间字符串转换为UTC时间的字符串?
我确定我以前做过这个,但找不到它,所以希望能帮助我(以及其他人)在将来做到这一点.
澄清:例如,如果我2008-09-17 14:02:00在我的本地时区(+10)中,我想生成一个具有相同UTC时间的字符串:2008-09-17 04:02:00.
此外,请访问http://lucumr.pocoo.org/2011/7/15/eppur-si-muove/,请注意,一般情况下这不可能与DST和其他问题一样,因此从当地时间到UTC时间.
我正在处理Python中的日期,我需要将它们转换为UTC时间戳,以便在Javascript中使用.以下代码不起作用:
>>> d = datetime.date(2011,01,01)
>>> datetime.datetime.utcfromtimestamp(time.mktime(d.timetuple()))
datetime.datetime(2010, 12, 31, 23, 0)
Run Code Online (Sandbox Code Playgroud)
将日期对象首先转换为datetime也无济于事.我试过这个链接的例子,但是:
from pytz import utc, timezone
from datetime import datetime
from time import mktime
input_date = datetime(year=2011, month=1, day=15)
Run Code Online (Sandbox Code Playgroud)
现在要么:
mktime(utc.localize(input_date).utctimetuple())
Run Code Online (Sandbox Code Playgroud)
要么
mktime(timezone('US/Eastern').localize(input_date).utctimetuple())
Run Code Online (Sandbox Code Playgroud)
确实有效.
所以一般的问题:如何根据UTC获得自纪元以来转换为秒的日期?
我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的新手...我已经四处寻找,似乎没有任何工作.
我有一堆日期时间对象,我想计算自过去一个固定时间以来每秒的秒数(例如自1970年1月1日以来).
import datetime
t = datetime.datetime(2009, 10, 21, 0, 0)
Run Code Online (Sandbox Code Playgroud)
这似乎只是区分具有不同日期的日期:
t.toordinal()
Run Code Online (Sandbox Code Playgroud)
任何帮助深表感谢.
我从来没有把时间转换成UTC.最近有一个请求要让我的应用程序能够识别时区,而且我一直在圈子里跑.关于将本地时间转换为UTC的大量信息,我发现它相当基本(也许我也做错了),但我找不到任何有关将UTC时间轻松转换为最终用户时区的信息.
简而言之,Android应用程序向我发送(appengine app)数据,在该数据中是一个时间戳.要将时间戳存储到我正在使用的时间:
datetime.utcfromtimestamp(timestamp)
Run Code Online (Sandbox Code Playgroud)
这似乎有效.当我的应用程序存储数据时,它将提前5小时存储(我是EST -5)
数据存储在appengine的BigTable上,当检索到它时,它就像一个字符串一样:
"2011-01-21 02:37:21"
Run Code Online (Sandbox Code Playgroud)
如何在用户正确的时区将此字符串转换为DateTime?
此外,用户时区信息的推荐存储是什么?(你怎么通常存储TZ信息,即:"-5:00"或"EST"等等等等),我敢肯定的答案,我的第一个问题可能包含一个参数的回答第二个.
我有dt = datetime(2013,9,1,11),我想得到这个日期时间对象的Unix时间戳.
当我这样做时,(dt - datetime(1970,1,1)).total_seconds()我得到了时间戳1378033200.
当datetime.fromtimestamp我把它转换回来的时候datetime.datetime(2013, 9, 1, 6, 0).
小时不匹配.我在这里想念的是什么?
我正在寻找一种快速输入时间的方法,然后python将其转换为其他时区(可能最多10个不同的时区)
抱歉.我根本不熟悉python中的时间,如果有人能把我放在正确的方向,我会非常感激.
我想将日志文件中的UTC时间戳与本地时间戳进行比较.在创建本地datetime对象时,我使用如下内容:
>>> local_time=datetime.datetime(2010, 4, 27, 12, 0, 0, 0,
tzinfo=pytz.timezone('Israel'))
Run Code Online (Sandbox Code Playgroud)
我想找到一个自动工具来取代tzinfo=pytz.timezone('Israel')当前的本地时区.
有任何想法吗?
我们可以使用time.tzname获取本地时区名称,但该名称与之不兼容pytz.timezone.
实际上,返回的名称time.tzname含糊不清.此方法('CST', 'CST')在我的系统中返回,但"CST"可以指示四个时区: