我在玩 Google App Engine,我了解到时区固定为 UTC。我想确定用户本地时区当天的开始和结束时间。所以基本上,给定 UTC 的当前时间,您如何确定当天的开始和结束时间,同时考虑到夏令时转换。
我有一些笨重的示例代码。请注意,我意识到如果我手动指定日期,我也可以指定明天的日期,但它们是示例,我想以编程方式确定它。我的主要问题是,如果我将 timedelta 添加到带有时区的日期时间,然后对其进行标准化(就像 pytz 文档中所建议的那样),我会得到一个日期时间,在夏令时切换期间关闭一小时。
代码中没有提到,但最终目的是将这些时间转换回 UTC,这就是为什么了解时区很重要的原因。
#!/usr/bin/python
import datetime
from pytz.gae import pytz
hobart_tz = pytz.timezone('Australia/Hobart')
utc_dt = pytz.utc.localize(datetime.datetime.utcnow())
hobart_dt = utc_dt.astimezone(hobart_tz)
# create a new datetime for the start of the day and add a day to it to get tomorrow.
today_start = datetime.datetime(hobart_dt.year, hobart_dt.month, hobart_dt.day)
today_start = hobart_tz.localize(today_start)
today_end = hobart_tz.normalize(today_start + datetime.timedelta(days=1))
print 'today:', today_start
print ' next:', today_end
print
# gives:
# today: 2011-08-28 00:00:00+10:00
# next: 2011-08-29 …Run Code Online (Sandbox Code Playgroud) 我正在使用“日期时间”模块,我正在尝试计算两个日期之间的差异天数。这是我正在使用的代码,在它之前还有一些其他代码来获取对象sub.created_utc(POSIX 时间戳,或 unix 时间戳):
import datetime
date = datetime.datetime.utcfromtimestamp(sub.created_utc);
print(sub.created_utc);
print(date);
print(datetime.datetime.now() - date);
Run Code Online (Sandbox Code Playgroud)
这是输出:
1440736746.0
2015-08-28 04:39:06
287 days, 16:47:41.560711
Run Code Online (Sandbox Code Playgroud)
我的问题是,我如何获得其中的287 days一部分(或者只是287,我不介意任何一种方式)。我知道我可以使用正则表达式来提取它的那一部分,但是有没有更好更可靠的方法来做到这一点?
谢谢你的帮助!如果你想让我提供我可以提供的完整代码,只是认为没有必要。
我在django上遇到了如何从上周(不是7天前)检索数据的问题.使用date.isocalendar()[1]会很棒.但是有些stackoverflow浏览导致我没有令人满意的结果.
无论如何,我可以做到没有可移植性并使用mysql的INTERVAL功能.这是我想用django的ORM进行的查询.
SELECT id, user_id, CAST(timestamp AS Date), WEEK(timestamp,3), WEEK(CURDATE(), 3) FROM main_userstats WHERE week(timestamp, 3) = WEEK(DATE_SUB(CURDATE(), INTERVAL 1 WEEK ), 3)
我怎样才能使用extradjango中的函数(如果不可能以任何其他更简单的方式进行)?
我正在尝试将日期字符串转换为年龄.
字符串就像:"星期一,2008年11月17日01:45:32 +0200",我需要知道它已经有多少天了.
我使用以下方式成功转换了日期:
>>> time.strptime("Mon, 17 Nov 2008 01:45:32 +0200","%a, %d %b %Y %H:%M:%S +0200")
(2008, 11, 17, 1, 45, 32, 0, 322, -1)
Run Code Online (Sandbox Code Playgroud)
出于某种原因,%z给了我+0200的错误,但这并不重要.
我可以使用以下时间获取当前时间:
>>> time.localtime()
(2009, 2, 3, 19, 55, 32, 1, 34, 0)
Run Code Online (Sandbox Code Playgroud)
但是如何在不通过列表中的每个项目并手动执行的情况下从另一个中减去一个?
我正在尝试打印从今天到一年前的日期范围。所以我可以将它应用于我的其他代码中的 sql 查询。
我知道我的算法有效,但我需要从格式“2014-05-15”中减去 1 天这是代码
from datetime import date, timedelta
import datetime
current_date = datetime.date.today()
datecounter = 0
while datecounter != 365:
print current_date
date_start = current_date
print date_start
# current_date = current_date.timedelta(days=1)
print current_date
print 'the date is between', date_start, 'and', current_date
datecounter += 1
Run Code Online (Sandbox Code Playgroud)
我正在寻找要输出的代码
the date is between 2014-05-16 and 2014-05-15
the date is between 2014-05-15 and 2014-04-14
Run Code Online (Sandbox Code Playgroud)
等等
我根据逻辑写了一个人为的例子,如果你想自己运行它,你可能会更好地理解我想要做什么。
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
curdate = 5
for …Run Code Online (Sandbox Code Playgroud) 有一个我设置的变量
now = datetime.datetime.now()
我希望能够设置一个变量,它只yesterday需要从中now减去一天.
我确信这非常容易,但我该怎么做?
我有一个字符串,我已使用解析转换为日期时间对象.
time = 'Tue, 30 Sep 2014 16:19:08 -0700 (PDT)'
date_object = parse(time)
Run Code Online (Sandbox Code Playgroud)
我想找到从那时起已经过去的时间.我尝试使用datetime.datetime.now()和减去这两个,但它们是不同的格式,并抛出一个错误.
做这个的最好方式是什么?