我有一个DateTime,我想格式化为" 2009-09-01T00:00:00.000Z",但下面的代码给我" 2009-09-01T00:00:00.000+01:00"(两行):
new DateTime(2009, 9, 1, 0, 0, 0, 0, DateTimeKind.Utc).ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffzzz")
new DateTime(2009, 9, 1, 0, 0, 0, 0, DateTimeKind.Utc).ToUniversalTime().ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffzzz")
Run Code Online (Sandbox Code Playgroud)
任何想法如何使其工作?
是否有一种简单的方法来NSDate使用当前的UTC日期/时间进行初始化?
如何查询mysql数据库以返回日期时间早于1周前的所有记录.请注意,datetime表以UTC格式存储所有内容,我应该在其中进行比较...
Jusst要清楚 - 我正在寻找一个纯粹的mysql查询
有没有办法通过指定日期来获取UTC时间戳?我期待的是:
datetime(2008, 1, 1, 0, 0, 0, 0)
Run Code Online (Sandbox Code Playgroud)
应该导致
1199145600
Run Code Online (Sandbox Code Playgroud)
创建天真的日期时间对象意味着没有时区信息.如果我查看datetime.utcfromtimestamp的文档,则创建UTC时间戳意味着省略时区信息.所以我猜,创建一个天真的日期时间对象(就像我做的那样)会产生一个UTC时间戳.然而:
then = datetime(2008, 1, 1, 0, 0, 0, 0)
datetime.utcfromtimestamp(float(then.strftime('%s')))
Run Code Online (Sandbox Code Playgroud)
结果是
2007-12-31 23:00:00
Run Code Online (Sandbox Code Playgroud)
datetime对象中是否还有隐藏的时区信息?我究竟做错了什么?
我们正在处理需要处理来自不同时区和夏令时设置的全球时间数据的应用程序.我们的想法是在内部以UTC格式存储所有内容,只为本地化用户界面来回转换.SQL Server是否提供任何机制来处理给定时间,国家和时区的翻译?
这一定是一个常见的问题,所以我很惊讶谷歌不会发现任何可用的东西.
有什么指针吗?
获取当前UTC时间的功能是什么.我尝试过System.getCurrentTime,但我得到了设备的当前日期和时间.
谢谢
如何从标准DateTime格式转换为UTC ?
更具体地说,如果我DateTime在一个时区创建一个对象然后切换到另一个时区并ToUniversalTime()在其上运行,它如何知道转换是否正确完成并且时间仍然准确表示?
我想解析一个表示UTC格式的DateTime的字符串.
我的字符串表示包括Zulu时间规范,该规范应指示字符串表示UTC时间.
var myDate = DateTime.Parse("2012-09-30T23:00:00.0000000Z");
Run Code Online (Sandbox Code Playgroud)
从上面我希望myDate.Kind是DateTimeKind.Utc,而不是DatetimeKind.Local.
我做错了什么以及如何解析表示UTC时间的字符串?
非常感谢!
假设有一个重新发生的事件让我们说结束时间总是在同一个本地时间,比如说17:00,无论该时区是否开启夏令时.并且当DST在特定时区打开或关闭时,还要求不要手动更改时间.还要求每当任何其他系统通过API(即GetEndTimeByEvent)询问结束时间时,它总是以UTC格式发送结束时间.
方法1: 如果决定以UTC格式存储,则可以将其存储在数据库表中,如下所示.
Event UTCEndTime
=====================
ABC 07:00:00
MNO 06:00:00
PQR 04:00:00
Run Code Online (Sandbox Code Playgroud)
对于第一个事件ABC,UTC的结束时间是上午07:00,如果转换为从UTC到2012年7月1日当地时间显示,则将在当地时间17:00结束,如果在2012年10月10日转换( DST为时区的开启日期)然后将导致下午6点,这是不正确的结束时间.
我可以想到的一种可能的方法是将DST时间存储在附加列中,并在时区有DST ON时使用该时间.
方法2: 但是,如果它被存储为如下的本地时间,例如对于事件ABC,它将在任何日期始终为17:00,因为没有从UTC到本地时间的转换.
Event LocalEndTime
=======================
ABC 17:00:00
MNO 16:00:00
PQR 14:00:00
Run Code Online (Sandbox Code Playgroud)
应用程序层将本地时间转换为UTC时间,以通过(API GetEndTimeByEvent)发送到其他系统.
在这种情况下,以UTC格式存储时间仍然是个好主意吗?如果是,那么如何获得恒定的当地时间?
相关问题:是否有充分的理由将时间存储在UTC中?
[ 更新:格式说明符与格式字符串不同; 格式说明符是自定义格式字符串的一部分,其中格式字符串为"stock",不提供自定义.我的问题是说明符不是格式 ]
我一直在尝试使用格式字符串执行往返DateTime转换,格式字符串使用'zzz'格式说明符,我知道绑定到本地时间.因此,如果我尝试使用UTC日期时间进行往返,则会抛出DateTimeInvalidLocalFormat异常,它应该使用以下文本:
正在将UTC日期时间转换为仅适用于本地时间的格式的文本.使用'z'格式说明符调用DateTime.ToString时会发生这种情况,该说明符将在输出中包含本地时区偏移量.在这种情况下,要么使用指定UTC时间的'Z'格式说明符,要么使用'o'格式字符串,这是在文本中保留DateTime的推荐方法.传递由XmlConvert或DataSet序列化的DateTime时也会发生这种情况.如果使用XmlConvert.ToString,则传入XmlDateTimeSerializationMode.RoundtripKind以正确序列化.如果使用DataSet,请将DataColumn对象上的DateTimeMode设置为DataSetDateTime.Utc.
根据这个建议,我需要做的就是让我的代码工作就是用'ZZZ'代替'zzz',这样我就可以采用UTC格式了.问题是,文档中没有找到'Z',我尝试的任何'Z'格式组合,即'Z','ZZ','ZZZ',总是只转换DateTime实例,那些Z被视为文字.
有人忘记在没有告诉异常消息作者的情况下实现'Z',或者我错过了如何在没有黑客攻击的情况下用"+0000"替换有效的本地时间偏移量?
代码示例:
// This is the format with 'zzzzz' representing local time offset
const string format = "ddd MMM dd HH:mm:ss zzzzz yyyy";
// create a UTC time
const string expected = "Fri Dec 19 17:24:18 +0000 2008";
var time = new DateTime(2008, 12, 19, 17, 24, 18, 0, DateTimeKind.Utc);
// If you're using a debugger this will rightfully throw an exception
// with .NET 3.5 SP1 because 'z' …Run Code Online (Sandbox Code Playgroud)