Tag: utc

UtcNow和现在是相同的日期时间吗? 他们知道他们不同吗?

如果我运行一个代码片段: bool areTheyTheSame = DateTime.UtcNow == DateTime.Now 我会得到什么? DateTime返回知道它的时区,以便我可以比较吗? 我的具体问题是我正在尝试构建类似缓存的API。 如果需要DateTime AbsoluteExpiration,我是否必须强制我的API用户知道是给我一个UTC时间还是基于时区的时间? [编辑]这个SO问题与我的问题也非常相关: Cache.Add绝对到期 – 是否基于UTC? [编辑]为了澄清未来的读者,DateTimeKind是不同的。 未定义的DateTimeKind通常是一个问题,例如,当您从数据库中取出一个时,就会得到这个问题。 在DateTime构造函数中设置DateTimeKind … [编辑] JonSkeet写了一篇可爱的博客文章,谴责这种行为并提供解决方案: http : //noda-time.blogspot.co.uk/2011/08/what-wrong-with-datetime-anyway.html

ASP.NET:自1970年1月1日起获得毫秒数

我有一个ASP.NET,VB.NET日期,我试图获得自1970年1月1日以来的毫秒数。我尝试在MSDN中寻找一种方法,但我找不到任何东西。 有谁知道如何做到这一点?

使用DateTime结构解析ISO8601日期/时间

我试图用.NET的DateTime结构解析ISO8601格式的日期/时间字符串。 为了让我完全解决问题,我将使用.NET和JavaScript执行测试。 我目前在英国(英国夏令时,UTC + 01:00)。 我对ISO8601的理解是: 当字符串后缀为“Z”时,时间以UTC表示。 当字符串后缀为“+/- hh:mm”时,时间以本地时间表示,其中“+/- hh:mm”表示与UTC的偏移量。 请考虑以下ISO8601日期/时间格式字符串: “1987-01-05T08:45:30.500+0100” 鉴于我的观点,该字符串表示当地时间为“08:45:30”,UTC时间为“07:45:30” 当前TimeZone测试(.NET) DateTime now = DateTime.Now; Console.WriteLine(now.ToLocalTime()); // 27/08/2013 12:02:43 Console.WriteLine(now.ToUniversalTime()); // 27/08/2013 11:02:43 当前TimeZone测试(JavaScript) var now = new Date(Date.now()); now.toString(); // Tue Aug 27 2013 12:03:46 GMT+0100 (GMT Daylight Time) now.toUTCString(); // Tue, 27 Aug 2013 11:03:46 GMT 除了两个例子之间的微小(分钟/秒)差异之外,它们正在回归我对英国夏令时(UTC + 01:00)的期望。 分钟/秒差异是因为我无法同时运行.NET测试和JavaScript测试。 […]

如何正确地将日期转换为UTC,然后将其转换回来?

我正在努力将DateTime转换为UTC,这个概念以及所有我无法正确理解的东西。 当我得到一个日期时间字符串,比如说“7/10/2013”​​,我就是这样做的 Convert.ToDateTime(“7/10/2013”).ToUniversalTime(); 这将在数​​据库中将其记录为“7/10/2013 4:00:00 AM ”。 服务器位于美国东海岸(-5)。 当然,在2013年7月期间,DST仍然被观察到,因此在此期间的偏移是-4,这样额外的4小时4:00:00 AM “记录为UTC。 当我写这篇文章时,它是2014年2月,DST没有生效,所以现在偏移是-5。 在我的应用程序中,这是我在我的应用程序中选择的偏移量。 如果我将-5偏移应用于“ 7/10 / 2013 4:00:00 AM ”,则日期将为“ 7/09/2013 11:00:00 PM ”。 哪一天是错的,一天就关闭了。 问题#1 那么如何才能正确转换UTC时间呢? 这意味着,当用户现在在2014年2月加载我的应用程序时(当前时区偏移-5),2013年7月10日凌晨4:00:00应该仍然是2013年7月10日,而不是7/09/2013。 令我困惑的是,因为.ToUniversalTime()考虑了服务器DST,是否存在一个硬盘“通用时间”,它不受服务器所在位置的影响? 问题2 当我在西海岸和东海岸都有服务器写入数据库时​​会发生什么? 如果记录的UTC时间是基于东海岸或西海岸,应用程序如何判断? 基本上,代码怎么说,“7/10/2013 4:00:00 AM”是在东海岸创建的UTC时间(表示美国东海岸的7/10/2013 00:00:00 AM)和不是西海岸的服务器(这表明它是美国西海岸的7/09/2013 20:00:00 pm)? 对不起,如果这听起来很愚蠢。 任何建议表示赞赏。 ==========最终编辑,我目前的解决方案=============== MiMo的答案是有道理的。 我对两件事感到困惑。 UTC时间存储在数据库中意味着什么? 服务器的时间与应用程序用户的关系是什么? 我的应用程序可以被来自不同时区的用户使用,有些用户与服务器位于同一时区,有些则不是。 有些旅行,所以即使它们与服务器位于同一时区,它们也可能一直落在不同的时区。 我的应用程序允许他们选择他们所在的时区,并适当地反映时间。 最初,我只是从数据库中获取UTC时间并从中减去用户的时区偏移量。 正如Mimo所说,这是错误的。 原因可以在上面的post中看到。 我最初的解决方案是立即获取服务器的时区偏移并使用它来加入/减去UTC,这也是错误的。 截至2013年7月10日,当时服务器的偏移量为-4。 目前,在2014年2月,服务器时区偏移为-5。 […]

将UTC DateTime转换为本地DateTime

我有以下ASP.Net MVC控制器方法: public ActionResult DoSomething(DateTime utcDate) { var localTime = utcDate.ToLocalTime(); } 问题是localTime将具有与utcDate完全相同的值。 我假设这是因为utcDate不知道它具有UTC值。 所以我的问题是如何将utcDate(我知道是UTC)转换为本地?

.Net的DateTime方法能够识别闰秒吗?

随着今年6月的闰秒即将到来,它让我想知道.Net框架是否闰秒意识到了? 额外的第二个将在6月30日的最后一秒之后插入,因此UTC将正式: 2012 June 30, 23h 59m 59s 2012 June 30, 23h 59m 60s 2012 July 1, 0h 0m 0s .Net框架能够处理这个吗? 如果Windows不是Leap Second意识到,这甚至是否重要? 这是否会影响运行在O / S上的单声道应用程序是否具有 Leap Second意识? 编辑: 为了进一步扩展这一点,我想象一个场景,Linux上的基于Java的解决方案(Leap Second aware)调用.Net Web服务传递的内容是Java中的有效时间戳但是超出范围。净。 有没有适合它的框架(也许像Noda Time一样)?

从服务器获取当前日期时间并将其转换为c#中的本地时间

帮助:我有一台服务器,有时间在格林威治标准时间-07.00小时。 我当地时间是格林威治标准时间+05.30。 我需要从服务器获取当前日期和时间,并将此日期和时间转换为我当地时间。 我尝试了很多代码,但仍未找到连续的方法。 有人可以帮帮我。 string zoneId = “India Standard Time”; TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById(zoneId); DateTime result = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tzi); DateTime cu = result.ToUniversalTime(); DateTime cur = cu.ToLocalTime(); 我已经尝试了上述所有方法,但仍然没有得到正确的答案。 假设我当前的当地时间是2014年3月9日下午12:51:00,那么我的服务器时间将是12.30小时,与当地时间不同,即从当地时间减去12小时30分钟以获得服务器时间。 我需要从服务器时间获取当地时间。 它怎么能实现? 请建议我一些解决方案..提前感谢您的答案

Application中的UTC时间相关问题,(C#,ASP.NET和SQL)

我正在开发一个与销售和采购报告相关的应用程序。 在那里,我通过使用该购买和销售报告的数据生成图表。 采购订单和销售订单日期的创建是关于(UTC + 5.30)时间,即此时间是针对印度孟买的。 情景-1 假设这是场景(目前此应用程序在印度用于此场景) Lets Say, **Purchase Order & sales Order Generation is as follows** Purchase Order(Rs) Sales Order(Rs) 31-Jan-2014 11.00PM 1000 2000 31-Jan-2014 10.00PM 2000 4000 根据这个,如果我创建图表,那么图表的数据将如下所示。 Purchase Sales Jan-2014 3000 6000 我对这种情况没有任何问题, 但是假设我在美国有一家分店,我的一位美国同事创建了相同的采购订单和销售订单然后我的问题开始如下 情景-2 假设这是场景(目前此应用程序在美国用于此场景) Lets Say, **Purchase Order & sales Order Generation is as follows** Purchase Order(Rs) Sales Order(Rs) […]

将DateTime转换为UTC时,调整规则是什么?

在TimeZoneInfo.ConvertTimeToUtc()的MSDN页面中,有以下信息框: 如果当前计算机的本地时区包含多个调整规则,则ConvertTimeToUtc方法的此重载可以返回与TimeZone.ToUniversalTime和DateTime.ToUniversalTime方法不同的结果。 无论dateTime是否位于其日期范围内,TimeZone.ToUniversalTime始终将当前调整规则应用于时区转换。 在.NET Framework 3.5上执行时,DateTime.ToUniversalTime也会将当前调整规则应用于时区转换,无论dateTime是否位于其日期范围内。 我不确定我明白这意味着什么。 什么是这些调整规则,以及ConvertTimeToUtc()和TimeZone.ToUniversalTime()之间的结果如何不同?

如何指定从EntityFramework检索的DateTime对象应该是DateTimeKind.UTC

我有C#程序,其中所有DateTime对象都是DateTimeKind.UTC 。 将对象保存到数据库时,它按预期存储UTC。 但是,在检索它们时,它们是DateTimeKind.Unspecified 。 有没有办法告诉entity framework(代码优先)在C#中创建DateTime对象时总是使用DateTimeKind.UTC ?