我正在使用MySql Database.Iy中的一个查询中的Where Condition.我的问题是我的表中有一个displaytime列,但该表列显示UTC时间中的数据.我想在本地时间转换该displaytime列Zone.so如何从查询本身提供此工具.
我已经对这些东西进行了调整,并且我知道那样的东西SELECT CONVERT_TZ()会起作用.但它不适合我.
这是我的查询,我需要将显示时间转换为本地时区...所以有人可以指导我吗?
WHERE displaytime >= '2012-12-01 00:00:00'
AND displaytime <='2013-02-22 23:59:59'
AND ct.organizationId IN (
SELECT t.organizationId
FROM organization_ AS t
JOIN organization_ AS p ON t.treePath LIKE CONCAT(p.treePath, '%')
WHERE p.organizationId = 10707
Run Code Online (Sandbox Code Playgroud)
样本数据

我在pytz的.localize()函数中遇到了一些奇怪的问题.有时它不会调整本地化的日期时间:
.localize行为:
>>> tz
<DstTzInfo 'Africa/Abidjan' LMT-1 day, 23:44:00 STD>
>>> d
datetime.datetime(2009, 9, 2, 14, 45, 42, 91421)
>>> tz.localize(d)
datetime.datetime(2009, 9, 2, 14, 45, 42, 91421,
tzinfo=<DstTzInfo 'Africa/Abidjan' GMT0:00:00 STD>)
>>> tz.normalize(tz.localize(d))
datetime.datetime(2009, 9, 2, 14, 45, 42, 91421,
tzinfo=<DstTzInfo 'Africa/Abidjan' GMT0:00:00 STD>)
Run Code Online (Sandbox Code Playgroud)
如您所见,由于本地化/规范化操作,时间没有改变.但是,如果使用.replace:
>>> d.replace(tzinfo=tz)
datetime.datetime(2009, 9, 2, 14, 45, 42, 91421,
tzinfo=<DstTzInfo 'Africa/Abidjan' LMT-1 day, 23:44:00 STD>)
>>> tz.normalize(d.replace(tzinfo=tz))
datetime.datetime(2009, 9, 2, 15, 1, 42, 91421,
tzinfo=<DstTzInfo 'Africa/Abidjan' GMT0:00:00 STD>)
Run Code Online (Sandbox Code Playgroud)
这似乎调整了日期时间.
问题是 - 这是正确的,为什么其他的错?
在.NET中,以下语句返回不同的值:
Response.Write(
TimeZoneInfo.ConvertTime(
DateTime.Parse("2010-07-01 5:30:00.000"),
TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"),
TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time"))
);
// displays 7/1/2010 1:30:00 PM
Run Code Online (Sandbox Code Playgroud)
..还有这个...
Response.Write(
TimeZoneInfo.ConvertTime(
DateTime.Parse("2010-07-01 5:30:00.000"),
TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"),
TimeZoneInfo.FindSystemTimeZoneById("UTC"))
);
// displays 7/1/2010 12:30:00 PM
Run Code Online (Sandbox Code Playgroud)
为什么是这样?我认为UTC和GMT标准时间相当.
更新
经过进一步测试,我发现以下内容似乎是等效的:
"世界标准时间"
"格林威治标准时间"
"摩洛哥标准时间"
而在夏季,以下情况有所不同:
"GMT标准时间"
也许我的问题应该是,为什么"格林威治标准时间"和"格林威治标准时间标准时间"有所不同?
结束更新
在我的项目中,我得到了json格式的API响应.我得到一个UTC时间格式的字符串值,如下所示Jul 16, 2013 12:08:59 AM.
我需要将其更改为本地时间.这就是我们使用此应用程序需要显示当地时间的地方.我该怎么做?
这是我尝试过的一些代码:
String aDate = getValue("dateTime", aEventJson);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MMM dd, yyyy HH:mm:ss z");
simpleDateFormat.setTimeZone(TimeZone.getDefault());
String formattedDate = simpleDateFormat.format(aDate);
Run Code Online (Sandbox Code Playgroud)
假设aDate包含 Jul 16, 2013 12:08:59 AM
我现在能想到的最好的就是这种怪异:
>>> 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 datetime对象,我想转换为UTC.我计划以RFC 2822格式输出它以放入HTTP标头,但我不确定这对于这个问题是否重要.我在这个网站上找到了一些关于转换时间对象的信息,它看起来更简单,但这次我真的想使用datetime对象,因为我使用timedeltas来调整它们:
我试过这样的事情:
from datetime import datetime, timedelta
now = datetime.now()
fiveMinutesLater = datetime.now() + timedelta(minutes=5)
fiveMinutesLaterUtc = ???
Run Code Online (Sandbox Code Playgroud)
时间或日期时间模块中的任何内容看起来都不会对我有所帮助.看起来我可以通过将datetime对象传递给3或4个函数来实现它,但我想知道是否有更简单的方法.
我宁愿不使用第三方模块,但我可能会认为它是唯一合理的选择.
C#中是否有返回UTC(GMT)时区的方法?不是基于系统的时间.
基本上我想获得正确的UTC时间,即使我的系统时间不对.
我想这样做,所以在MySQL查询中调用NOW()和CURDATE()会以UTC格式返回日期.如何在不经过并更改使用这些功能的所有查询的情况下实现此目的?
可能是一个经典...你知道在Oracle上检索SYSDATE的UTC值的一个简单技巧(最好是在第8版本上也可以获得一些东西).
现在我有自定义功能:(
干杯,
斯特凡