我从来没有把时间转换成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"等等等等),我敢肯定的答案,我的第一个问题可能包含一个参数的回答第二个.
我正在尝试从电子邮件中检索日期.起初它很容易:
message = email.parser.Parser().parse(file)
date = message['Date']
print date
Run Code Online (Sandbox Code Playgroud)
我收到:
'Mon, 16 Nov 2009 13:32:02 +0100'
Run Code Online (Sandbox Code Playgroud)
但我需要一个不错的日期时间对象,所以我使用:
datetime.strptime('Mon, 16 Nov 2009 13:32:02 +0100', '%a, %d %b %Y %H:%M:%S %Z')
Run Code Online (Sandbox Code Playgroud)
提升了ValueError, since %Z isn't format for +0100.但我在文档中找不到适当的时区格式,只有这个%Z区域.有人可以帮助我吗?
我正在尝试解析像"Sat, 11/01/09 8:00PM EST"Python中的时间戳字符串,但我找不到能够处理缩写时区的解决方案.
我正在使用dateutil的parse()功能,但它不解析时区.是否有捷径可寻?
是否可以使用日期对象中的日,月和年创建Python时间戳(秒数)?我基本上在寻找午夜的时间戳(小时,分钟和秒都是0).
谢谢!
继我之前的问题,Python的时间老化之后,我现在遇到了关于时区的问题,结果发现它并不总是"+0200".因此当strptime尝试解析它时,它会引发异常.
我想过用[:-6]或者其他什么来切断+0200,但有一种真正的方法可以用strptime做到这一点吗?
如果重要的话,我正在使用Python 2.5.2.
>>> from datetime import datetime
>>> fmt = "%a, %d %b %Y %H:%M:%S +0200"
>>> datetime.strptime("Tue, 22 Jul 2008 08:17:41 +0200", fmt)
datetime.datetime(2008, 7, 22, 8, 17, 41)
>>> datetime.strptime("Tue, 22 Jul 2008 08:17:41 +0300", fmt)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.5/_strptime.py", line 330, in strptime
(data_string, format))
ValueError: time data did not match format: data=Tue, 22 Jul 2008 08:17:41 +0300 fmt=%a, %d %b %Y %H:%M:%S +0200
Run Code Online (Sandbox Code Playgroud) 我正在尝试测试基于django cart的购物车创建
但是当我尝试创建购物车时出现此错误:
RunTimeWarning:DateTimeField在时区支持处于活动状态时收到了一个天真的日期时间
我做了一些研究,但我无法解决我的问题 datetime.datetime.now()
我的测试目录中的test_views.py:
from django.test import TestCase, Client, RequestFactory
import unittest
from django.contrib.auth.models import User, AnonymousUser
from front.models import Entreprise, Cart, CartItems
from decimal import Decimal
from front.cart import models
import datetime
import pytz
from pytz import all_timezones
from django.utils import timezone
def _create_cart_in_database(self, creationDate=datetime.datetime.now(), checkedOutDate=True):
"""
Helper function so I don't repeat myself
"""
cart = models.Cart()
cart.creationDate = creationDate
cart.checkedOutDate = False
cart.save()
return cart
def test_cart_creation(self):
creationDate = datetime.datetime.now()
cart = …Run Code Online (Sandbox Code Playgroud) 我有以下字符串"2017-03-30 08:25:00CET",我想将其转换为日期时间tz感知对象.
根据这个问题,从python 3.2可以只使用datetime模块完成.另外,从文档中我看到了
Run Code Online (Sandbox Code Playgroud)%z | UTC offset in the form +HHMM or -HHMM (empty string if the object is naive). | (empty), +0000, -0400, +1030 %Z | Time zone name (empty string if the object is naive). | (empty), UTC, EST, CST
所以我尝试以下方法
datetime.strptime(dep_dt, '%Y-%m-%d %H:%M:%S%Z')
Run Code Online (Sandbox Code Playgroud)
我没有得到任何错误,但是我得到的对象不是tz意识到的
datetime.datetime(2017, 3, 30, 8, 25)
Run Code Online (Sandbox Code Playgroud)
另一方面,如果我将我的字符串转换为"2017-03-30 08:25:00+0200"然后将其转换为对象
datetime.strptime(dep_dt, '%Y-%m-%d %H:%M:%S%z')
我确实得到了一个tz感知的日期时间:
datetime.datetime(2017, 3, 30, 8, 25, tzinfo=datetime.timezone(datetime.timedelta(0, 7200)))
Run Code Online (Sandbox Code Playgroud)
任何想法为什么它适用%z但不与%Z …
我试图从以下日期创建一个日期时间对象:'Fri Mar 11 15:59:57 2016 2016'使用格式:'%a%b%d%H:%M:%S%Z%Y' .
这是代码.
from datetime import datetime
date = datetime.strptime('Fri Mar 11 15:59:57 EST 2016', '%a %b %d %H:%M:%S %Z %Y')
Run Code Online (Sandbox Code Playgroud)
但是,这会导致ValueError,如下所示.
ValueError: time data 'Fri Mar 11 15:59:57 EST 2016' does not match format '%a %b %d %H:%M:%S %Z %Y'
Run Code Online (Sandbox Code Playgroud)
也许我错过了我的格式字符串明显错误的东西,但我一遍又一遍地检查它.非常感谢任何帮助,谢谢.
编辑以反映评论/问题以获取更多信息:
我正在使用的Python版本是2.7.6.
在Ubuntu 14.04上使用'locale'命令我得到这个:
$ locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
Run Code Online (Sandbox Code Playgroud) 有没有办法,在linux中,有问题地获得给定时间字符串的UTC时间
Tue Dec 14 10:30:23 PST 2012
Tue Jan 4 11:30:23 EST 2013
Run Code Online (Sandbox Code Playgroud)
到UTC时间,无论(并且不更改)本地时区设置?
我想安排一个任务(即一个代码块)在稍后执行,其中执行的时间和日期以及其他参数作为任务有效负载传入.
所以我们有一个基于Python(Django)的Appengine应用程序,其中:
任务在tasks.py中定义
@csrf_exempt
def task_myfunction(request):
if request.method == 'POST':
# Read POST parameters
# Perform task
return HttpResponse("Success")
Run Code Online (Sandbox Code Playgroud)
Payload被添加到views.py中的队列中,并且有效负载被POST到提供的URL,该URL映射到上面定义的函数.
from google.appengine.api import taskqueue
# ..Somewhere inside a view..
taskqueue.add(queue_name='myqueue', url='/task/myfunction', params={
# Specify parameters
})
Run Code Online (Sandbox Code Playgroud)
有没有办法,我可以指定执行的准确时间(带有时区)以及有效负载数据,以便从队列中自动获取任务并在该时刻执行.
我有时间格式:
Sat Jan 17 04:33:06 +0000 2015
Run Code Online (Sandbox Code Playgroud)
我无法匹配strptime格式.我能找到最接近的:基本日期时间类型是%c"Locale的适当日期和时间表示." 但是,这并不完全匹配.
我要去:
time_vec = [datetime.strptime(str(x),'%c') for x in data['time']]
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.
当前日期时间通过ajax请求传递到Django后端,该日期将存储在数据库中。要将其存储在数据库中,必须首先将日期转换为一个datetime对象,可以Sun, 04 Sep 2016 07:13:06 GMT通过以下语句轻松地将日期转换为UTC格式(例如)的对象:
>>> from datetime import datetime
>>> datetime.strptime("Sun, 04 Sep 2016 07:13:06 GMT", "%a, %d %b %Y %H:%M:%S %Z")
Run Code Online (Sandbox Code Playgroud)
但是,在这种方法中,无法保留用户的时区。
javascript Date构造函数调用,即new Date()以以下格式返回日期:
Sun Sep 04 2016 12:38:43 GMT+0530 (IST)
Run Code Online (Sandbox Code Playgroud)
转换为datetime对象时给出错误。
>>> datetime.strptime("Sun, 04 Sep 2016 07:13:06 GMT+0530 (IST)", "%a, %d %b %Y %H:%M:%S %Z")
ValueError: time data 'Sun Sep 04 2016 12:46:07 GMT+0530 (IST)' does not match format '%a, %d %b %Y %H:%M:%S …Run Code Online (Sandbox Code Playgroud)