这似乎应该是一个明显的问题,但是我有一些问题找到一个很好的答案.我正在构建一个需要对UTC时间敏感的N层应用程序.值可以更新以及记录时间戳时.这包括数据库中的交易,更新或插入将影响DateTime列. 为了给出一些上下文,我正在使用SQL 2008 R2 +将DateTimeOffset(2)用于我的大多数DateTime列.我正在考虑将时间戳的更新放入存储过程中,以便不需要通过网络传递.随着系统的增长,这将保存带宽,这是一件好事……可以用来验证数据是否更改(首次获胜).偏低的一面是,如果在申请实例中遇到响应时间较慢的时间,则第一个提交交易的人可能不是赢得交易的. 在这种情况下,处理UTC时间数据的理想或推荐方法是什么? 使用sysutcdateTime()或... 将其设置 使用dateTimeOffset..now或dateTime.utcnow 将其设置在应用程序中 如果上面两个,建议在演示层发射它,并将其通过服务传递到域层,或者在服务后端撞击域时将其设
以下是关于 datetimeoffset 的编程技术问答
我有一个.NET WCF服务,其中一些操作合同占用DateTimeOffset.这个想法是避免与DST和时区的混淆. 但是,我怀疑毕竟使用dateTimeOffset是一个好主意,因为它是不可归的,并且会给任何试图与Java应用程序或.NET应用程序连接的人引起头痛.NET版本. 一种替代方法是期望UTC DateTime,但这引入了某人忘记使用UTC时间并在当地时间致电服务的风险. 我也可以期待当地的日期时间,因为客户端将始终处于同一时区,但是这会留下一些微妙但经典的歧义,围绕DST的变化. 是否有人在服务接口中使用DateTimeOffset有头痛故事,还是使用相对毫无疑问? 解决方案 我目前正在将我们的一些基础架构更改为WCF,并偶然发现了这个未解决的问题,并决定尝试它. :) WCF序列化DateTime和DateTimeOffset的方式似乎有些怪异.如以下示例所示,使用DateTime在使用其他平台时看起来更好的选择: using Sys
我不确定我的问题标题是否完美 - 所以请允许我进一步解释. 这是一些测试数据的快照: 这是我的代码: Function TestDb() As ActionResult Dim clientLocId As Integer = 23 Dim showDate As New Date showDate = New Date(2015, 8, 14) 'showDate = New Date(2015, 9, 22) 'showDate = New Date(2015, 9, 27) Dim orderRecs = db.Orders.Where(Function(x) x.ClientLocationId = clientLocId AndAlso x.OrderNumber IsNot Nothing _ AndAlso x.DateCompletedUtc IsNot Nothing _
我正在尝试将日期字符串从Java的另一个时区转换为UTC格式.我们只有时区偏移,例如" -06:00".任何人都可以帮助我如何使用时区偏移将日期时间转换为UTC格式. 谢谢 这是Java版本1.7.我已经尝试了以下摘要,但接收与输出相同的输入. String dateInString = "02/04/2019 18:17:15"; SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); formatter.setTimeZone(TimeZone.getTimeZone("UTC")); Date date = formatter.parse(dateInString); DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
假设我有两个时间戳.一个在UTC中,另一个时区是未知的,但有一个日期和时间.后者的格式为YYYY:MM:DD HH:MM:SS. 通过简单地从UTC One减去第二个时间戳,然后四舍五入,从UTC获得偏移是合理的吗? 使用Java有一种直接的方法吗? (例如Joda或Jut?) 谢谢! 一点背景:这些日期来自图像的Exif元数据. Exif以格式存储图像的CreateDate:YYYY:MM:DD HH:MM:SS没有时区信息.它还将UTC时间戳(有时)存储在GPSTimeStamp下.使用这两个值,我希望得出偏移量,以便使用它存储创建日期.尽管有用于TZ偏移的Exif元数据,但相机很少记录. 解决方案 这是我最终做的: public static ZoneOffset determineTimeZoneOffset(OffsetDateTime localTime, OffsetDateTime utcTime) { if(utcTime ==
我在PHP中写下Twitter Web服务.当用户登录时,我会收到此节点: -18000 我必须更改脚本的时区,以使其适应用户的实时区域.我发现的唯一PHP函数是: date_ded_default_time_time_time_set ($ TimeZone_Identifier) ,但它不允许我将-18000用作$ TimeZone_Identifier参数. 因此,如何根据两个值更改当前的用户时区:服务器UTC OFFSET 和用户UTC Offset btw,这就是我获得服务器UTC偏移值的方式: $this_tz_str = date_default_timezone_get(); $this_tz = new DateTimeZone($this_tz_str); $now = new DateTime("now", $this_tz); $offset = $this_tz->getOffset(
我设计了我的应用程序,该事实是,根据规格, 应该在意大利的服务器上运行,客户仅是意大利人. 大约一个月前,我的BOS决定将其全部带到Azure上. 一切顺利.给我一些问题的唯一事实是,时间服务器是UTC. 解决方案是: a)简单 将启动脚本修改为服务器时间( http://netindindonesia.net/blogs/wely/archive/2011/06/26/setting timeZone-in-windows-azure.aspx ) b)更费力 更改以使任何使用UTC的应用程序并显示正确转换为本地时间的应用. 如果我寻求解决方案,我的疑问是,用不同时区设置服务器可以以某种方式与Azure造成冲突. 这是真的吗? 解决方案 我已要求MS支持. 这是响应: 不建议使用启动任务更改Azure虚拟机上的服务器时间,您应该宁愿在代码中使用TimeZoneInfo.ConvertTimeFromutctime
我正在阅读很多有关时区, offset , utc ,本地时间, javaScript函数, dst ,培根,我试图将所有这些都放在一起以构建我的应用程序的固体/正确结构. 假设我的应用类似于stackoverflow. 这就是我正在做的... 服务器位于另一个国家,所以我将其设置为UTC 00:00. 我将日期存储为DateTimeOffset. 我不是存储TimeZoneID. 日期以这种格式发送给客户:2012-07-19T14:30:00-03:00. 我正在使用Angular Filter将其转换为当地时间. 我有几个问题... 1º服务器时区? 关于我的服务器(单个服务器)...是否应该使用"中性" UTC(+00:00)运行?如果将来,我们搬到了服务器在不同位置运行的农场怎么办? 2º我应该存储什么? 目前,我仅存储日期为DateTimeOffset.我正在阅读有关保存TimeZoneID的信息,但我认为对此完全没有用
给定一个带有DateTime列的SQL表和大约100K行的各种日期(本地时间PST值),从过去3年开始,将这些列值迁移到 dateTimeOffset to"添加""添加"丢失的UTC TZ偏移信息? 现有的DateTime值已存储,没有任何时区/UTC偏移详细信息.存储的日期始终代表太平洋时间(取决于日光的时间,取决于-800或-700).目标是追溯将TZ偏移添加到所有现有数据中,假设日期来自太平洋时间(当前指定日期指定的正确偏移) ) 在SQL中,此类迁移的最佳实践是什么,而不会丢失任何数据或更改现有值? 将其带到下一步,迁移一个中等大小的整个数据库的最有效方法是什么(〜100GB in 〜100 intim 〜100表,每张表2个日期列列)使用DateTimeOffset列和值? 在PST/PDT转换日期凌晨2点登录/期间登录的数据记录会发生什么?是否会发生数据丢失? SQL Server 2008 + C#4.5 如果这不是合适的区域,请指向
在DB中保存DateTime和TimeZones信息有很多问题,但更多的是整体级别.在这里我想解决特定情况. 系统规格 我们有一个订单系统数据库 这是一个多租户系统,租户可以使用任意时区(是任意的,但每位租户单个时区,一次保存在租户表中,从不更改) 需要在DB 中涵盖业务规则 当租户将订单订购到系统中时,订单编号将根据其本地DateTime 计算(实际上不是一个数字,而是某种标识符,例如ORDR-13432-Year-Month-Day).精确的计算目前并不重要,重要的是,它取决于租户本地datetime 我们也希望能够在系统级别上选择所有订单,无论租户如何(对于一般系统统计/报告) 我们的最初想法 我们最初的想法是在整个数据库中保存UTC DateTime,当然,请保持租户的时区相对于UTC的抵消,并具有将DB始终将数据量转换为UTC的应用程序,以便DB本身始终使用UTC运行. . 方法1 保存本地租户的当地租户是不错的,但是我们在查
我希望提出这个问题和答案,这是处理日光节省时间的确定性指南,尤其是用于处理实际的更改. 如果您有任何要添加的东西,请执行 许多系统取决于保持准确的时间,问题是由于节省了日光而导致的时间变化 - 向前或向后移动时钟. 例如,一个人以订单系统的订单系统为取决于订单的时间 - 如果时钟更改,则规则可能不那么清楚.订单的时间应该如何持续?当然有无数的场景 - 这只是一个说明性的场景. 您是如何处理日光节省问题的? 您的解决方案的一部分是什么假设? (在这里寻找上下文) 重要的是,如果不是更多, 您尝试了什么不起作用? 为什么不起作用? 我将对问题的编程,操作系统,数据持久性和其他相关方面感兴趣. 一般答案很棒,但是我也想查看详细信息,尤其是在一个平台上可用的情况下. 解决方案 答案和其他数据摘要:(请添加您的) 做: 每当您指的是确切的时刻时,请根据不受日光节省影响的统一标准持续时间. (GMT和UTC等于这一点,但首选使用
我有一个带有DateTime列的行的旧表.我想将其切换到datetimeoffset,但我希望能够传输已经存在的数据.所以我正在做类似的事情: SET IDENTITY_INSERT Table_Temp ON INSERT INTO Table_Temp (Col0, ... ColN,) SELECT COl0,.... ColN, from Table_Original; SET IDENTITY_INSERT Table_Temp OFF 这有效,但是当我将datetime进行datetime到datetimeoffset分配时,偏移集为0.幸运的是,我要设置的偏移是当前系统的偏移.我似乎无法找到一种简单的方法. 我希望能够在转换中设置偏移.我本来打算做一个C#实用程序(或PowerShell),但我宁愿保持简单. 解决方案 如果您使用的是知道DateTimeOffset类型的SQL Server版本,则此语法将为您提供服务
我通常在从/到数据库进行读取/写作之前的"拦截器"进行数据库转换(从UTC到本地时间,从当地时间到UTC),因此我可以使用DateTime.Now(派生和比较) )在整个系统中,不必担心时区. 关于计算机之间的序列化和移动数据,无需打扰,因为日期时间始终是UTC. 我应该继续以UTC格式存储我的日期(SQL 2008 -DateTime),还是应该使用DateTimeOffset(SQL 2008 -DateTimeOffset)存储它? UTC日期(DateTime类型)一直在起作用并闻名了这么长时间,为什么要更改它?有什么优点? 我已经研究了 解决方案 有一个巨大的区别,您不能单独使用UTC. 如果您有这样的方案 一台服务器和几个客户 客户端创建一些带有DateTime信息的数据 客户端将其全部存储在中央服务器上 然后: dateTimeOffset存储客户端的本地时间,也将偏移到UTC时间 所有客户都知道所有数据的UTC时间,
对于瞬时数据跟踪,我正在使用DateTimeOffset datatype.以下功能将用户添加到DateTimeOffset 的UTC DateTime属性相应的时区ID偏移量 根据文档/a>,UtcDateTime将在DateTimeOffset上同时执行时区转换和类型转换.以下代码没有.为什么不进行转换? 添加时间板偏移的功能, public static DateTimeOffset GetUtcDateTime (DateTime sourceDateTime, string timeZoneId) { TimeZoneInfo timeZone = TimeZoneInfo.FindSystemTimeZoneById (timeZoneId); TimeSpan offset = timeZone.GetUtcOffset (sourceDateTime); DateTimeOffset utcTime = new DateTimeOffset (sou
我有一个DateTimeOffset的实例,我需要在特定的TimeZone(W.欧洲标准时间)中考虑日光保存规则(因此可能导致Offset更改).如果没有第三方库,我该怎么做? 可验证的示例: using System; using Microsoft.VisualStudio.TestTools.UnitTesting; namespace UnitTestProject { [TestClass] public class TimeZoneTests { [TestMethod] public void DateTimeOffsetAddDays_DaylightSaving_OffsetChange() { var timeZoneId = "W. Europe Standard Time"; var utcTimestamp = new DateT
没有一种方法可以在查询结果中配置SQL Server Management Studio,在客户端的本地时区中显示DateTimeOffset列的值,而不是UTC? 示例:我在时区+02:00.值存储为2016-07-27 22:00:00.0000000 +00:00.当前,此值在查询结果中显示为这样.我希望在我的机器上执行此查询时将其显示为2016-07-28 00:00:00.0000000 +02:00. 目前,我正在手动使用SWITCHOFFSET(CONVERT(datetimeoffset, ), DATENAME(TzOffset, SYSDATETIMEOFFSET()))显然很麻烦的东西. 如果我没记错的话,在Oracle中,可以使用会话级别的NLS参数. SQL Server中是否有类似的东西? 解决方案 SQL Server和SSM都无法使用"会话时区"的概念(例如Oracle,MySQL等). 另外,无论如
我的公司拥有从上午7点至晚上7点CST提供的支持人员,我们试图通过显示一个按钮来启动聊天的按钮或一条消息,或者说他们不可用的消息来反映这一点.支持人员位于中央时间,但是我们网站托管的服务器可能位于任何时区. (我远程工作,当我在机器上本地运行该项目时,例如在东部时间) 现在有一个错误,说明您不在CST下午6点的时间范围内,这太早了一个小时.这似乎是因为我在CST的时间范围实际上跨越了UTC时间2天(第二天凌晨1点至凌晨1点),而我的时间是UTC日期的时间.我知道这是导致问题的原因,但我不确定解决此问题的最佳方法. 这是代码,从返回布尔值返回控制台应用程序以登录EH值的函数. 查看下面的代码,或在此处使用://================================================================================================= //Get hours & days of operation //T
我有一个客户端JavaScript,该JavaScript在JavaScript(new Date(2007,5,1))中生成日期. 我需要这个日期传递到可以访问的代码可以访问的隐藏字段. 我的问题是,当隐藏的字段转换为dotnet日期时间时,时间不正确.这是因为JavaScript包括来自客户端浏览器的时区信息. 然后, dotnet正在使用此信息根据服务器时间和客户端时间之间的差来重新计算时间. 我从JavaScript中需要的只是一年,月和日. 我不想将3个int值传递给我的代码后面,因为这将是整个应用程序的重大更改. 我完成此操作的最佳方法是什么? 如果我可以在没有时区信息的情况下设置UTC时间,我认为可能会起作用. 任何帮助都将不胜感激. 解决方案 如果我正确理解了, 您需要 var date = new Date(2007,5,1); document.write(date); document.write("
我发现的最好的等效物是DateTimeOffset + TimeZoneInfo的组合.是最好的方法,创建一个包含这些类别并确保它们保持一致的结构吗? 解决方案 否,在.NET Base类库中没有类似于ZonedDateTime的内置类型. 正如其他人指出的那样,如果您正在寻找类似于Java Joda Time或java.time的时间模型,请考虑使用 ZonedDateTime ZonedDateTime 结构. 如果您不想使用NODA时间,并且您确实需要一个包含日期时间偏移和时区的单个对象,则使用DateTimeOffset和TimeZoneInfo字段的结构的建议方法是有道理的.这里有一些其他提示: 在其他单词中,将其设计为不可变的 struct很重要 - 仅从构造函数中获取输入.仅在字段上暴露属性捕获器.不要直接揭露字段,也不要在属性上提供设置器. 请注意如何处理DateTimeOffset的偏移 不是的情况,给定时区的正确偏移.您可能需要调整它,
我想知道是否有一种方法可以在给定持续时间之间在两个时区之间获得时区偏移. getTimezoneOffset(startDate,endDate,timezone1,timezone2){ ...missing magic to go here... } 应返回对给定持续时间有效的时区偏移.但是,如果偏移更改,则应返回其有效的日期范围. 所以我正在看这样的东西: getTimezoneOFfset("march 9 12 am", "march 15 12 am", "UTC", "US/NEW_YORK") 返回值类似于此 timezoneoffset[0]["range"]=[march 9 12am to march 11 2 am] timezoneoffset[0]["offset"]=5 timezoneoffset[1]["range"]=[march 9 2 am to march 15 12 am] timezoneoffset[