Tag: datetimeoffset

如何比较两个DateTimeOffSet?

我有一个DateTimeOffSet类型的变量。 我想过滤2010年1月1日之后创建的所有项目。 所以我写了以下查询: var _date = new DateTimeOffset(2010, 01, 01, 0, 0, 0, new TimeSpan(-7, 0, 0)); var projects = _repository.Find (x => x.CompanyId = CompId && x.CreatedOn > _date) .ToList(); 但是当我查看数据库时,这些是我看到的值的类型: 2001-01-25 05:21:46.4370000 -08:00 2005-06-17 00:00:00.0000000 -07:00 显然,一些值为-08:00 ,其他值为-07:00 。 那么我的上述查询仍然相关吗? 当我查看结果时,过滤正在按照我期望的方式完成。 唯一值得关注的是偏移部分的含义,结果可能是偶然的。 我对DayeTimeOffSet的工作方式并不熟悉。

是否可以为DateTimeOffset的JSON.NET反序列化指定偏移量?

以下语句打印“1/1/0001 4:00:00 PM -05:00” Console.WriteLine(JsonConvert.DeserializeObject(“\”0001-01-01T16:00:00\””)); 这是因为当json.net将DateTime字符串(没有偏移量)反序列化为DateTimeOffset对象时,它会分配本地偏移量,在本例中为-05:00。 如果我不想使用本地偏移怎么办? 有什么方法可以指定用于此反序列化的偏移量吗? (用例是数据库服务器,Web服务器位于不同的时区,我需要具有区域未指定时间的传入请求,以便在反序列化后使数据库服务器具有偏移量。) 更新:我无法控制传入时间字符串的格式。 我有一个数据传输对象类,它具有DateTimeOffset属性,我需要将传入的时间数据存储到此属性。

Json.Net在序列化时弄乱了DateTimeOffset的时区

我看过很多相关的问题,但似乎没有一个问题适合我。 我正在尝试序列化UTC中的所有内容。 这是我的代码: class Class1 { static void Main() { Class2 foo = new Class2(); JObject json = JObject.Parse(JsonConvert.SerializeObject(foo, new JsonSerializerSettings() { DateParseHandling = DateParseHandling.DateTimeOffset, DateFormatHandling = DateFormatHandling.IsoDateFormat, DateTimeZoneHandling = DateTimeZoneHandling.Utc })); Console.WriteLine(json.ToString()); Console.Read(); } } class Class2 { public DateTimeOffset time = new DateTimeOffset(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddTicks(14663484000000000)); public DateTimeOffset time2 […]

在SQL Server 2005数据库中存储ac#DateTimeOffset值

我想在SQL Server 2005数据库中存储aac#DateTimeOffset值。 Sql 2008将此作为内置类型,但SQL Server 2005没有。 DateTimeOffset结构具有DateTime值,我将其存储为DateTime,一个Offset属性(TimeSpan类型)。 由于这是相对于UTC的时区,因此可能通常是整数小时或半小时。 关于如何最好地将其存储在SQL Server 2005数据库中的建议?

如何将字符串转换为DateTime作为UTC就像那样简单

假设我有这个字符串:如何将其转换为具有UTC时间的DateTimeOffset对象 – 表示时区为-00:00 – 即使我在特定时区的机器上运行它? 假设字符串:“2012-10-08T04:50:12.0000000” Convert.ToDateTime(“2012-10-08T04:50:12.0000000”+“Z”); – > DateTime d = {10/8/2012 6:50:12 AM}我希望它是DateTime d = {10/8/2012 4:50:12 AM} ,好像它会理解我想要日期就这么简单(BTW – 我的机器在时区+02:00)

是否可以使用Json.NET将DateTimeOffset序列化为zulu时间字符串?

我有一个DateTimeOffset对象“05/06/2014 05:54:00 PM -04:00”。 使用Json.NET和ISO设置进行序列化时,我得到“2014-05-06T17:54:00-04:00”。 我想要的是该字符串的“UTC / Zulu”版本“2014-05-06T21:54:00Z”。 但是,我找不到任何序列化程序设置来实现此目的。 我知道对于DateTime序列化,我可以设置DateTimeZoneHandling = DateTimeZoneHandling.Utc以具有Zulu格式。 但是,DateTimeOffset没有这样的设置选项。 我错过了什么吗? 或者我是否必须为此创建自定义覆盖?

如何使用Sql Server解决EF 6中不受支持的DateTimeOffsets问题?

当我尝试实例化DbContext时,我收到此消息: System.NotSupportedException:没有与原始类型“DateTimeOffset”的概念边类型“DateTimeOffset”对应的商店类型。 我在SQL Server上使用Entity Framework版本6。 DbContext的构造DbContext (带有抛出exception的行)如下所示: internal TestHubContext(string connectionStringName) : base(connectionStringName) { var objectContext = (this as IObjectContextAdapter).ObjectContext; … } 使用代码优先创建实体,如下所示: public class Order { [Key] [Required] [DatabaseGenerated(DatabaseGeneratedOption.None)] public System.Guid Id { get; set; } [MaxLength(60)] [Required] public string CreatedBy { get; set; } [Required] public System.DateTimeOffset CreatedUtcDate { get; set; } } 数据库迁移运行正常并生成如下表: […]

将UTC DateTime转换为DateTimeOffset

我需要将UTC日期字符串转换为DateTimeOffsets 。 这必须使用与计算机时区不同的时区。 例如,当前计算机时区是+02:00,但我想创建一个偏移-4:00的DateTimeOffset。 我已经在stackoverflow上阅读了很多问题,但没有一个能解决我的问题。 这就是我需要做的事情: 输入: “2012-11-20T00:00:00Z” 输出: DateTimeOffset: UtcDateTime 2012-11-20 00:00 定义的时区的正确Utc偏移量(本例中为01:00) LocalDateTime: 2012-11-20 01:00 (= UtcDateTime + Offset) 当然,必须考虑夏令时。 编辑 :为了使事情更清楚,请尝试完成以下代码段: DateTimeOffset result; const string dateString = “2012-11-20T00:00:00Z”; var timezone = TimeZoneInfo.FindSystemTimeZoneById(“W. Europe Standard Time”); //this timezone has an offset of +01:00:00 on this date //do conversion here Assert.AreEqual(result.Offset, new TimeSpan(1, 0, […]

为什么Json.NET DeserializeObject会将时区更改为本地时间?

我正在使用json.net反序列化DateTimeOffset ,但它忽略指定的时区并将datetime转换为本地偏移量。 例如,给定 var content = @”{“”startDateTime””:””2012-07-19T14:30:00+09:30″”}”; 使用以下方法进行反序列化时: var jsonSerializerSettings = new JsonSerializerSettings() { DateFormatHandling = DateFormatHandling.IsoDateFormat, DateParseHandling = DateParseHandling.DateTimeOffset, DateTimeZoneHandling = DateTimeZoneHandling.RoundtripKind }; var obj = JsonConvert.DeserializeObject(content, jsonSerializerSettings); obj将包含一个包含DateTimeOffset的属性,但该值将为2012-07-19T15:30:00+10:30即转换为本地时区而不是保留原始时区。 有没有办法让值按预期进行解析,以便生成的DateTimeOffset属性与提供的值匹配?

如何判断它是否是英国夏令时

我有以下代码,它应该返回60的偏移量(显示目前在英国,我们在英国夏令时 – 即比格林威治标准时间早60分钟): var info = TimeZoneInfo.FindSystemTimeZoneById(“Greenwich Standard Time”); DateTimeOffset localServerTime = DateTimeOffset.Now; double off = localServerTime.Offset.TotalMinutes; return off; 但是,它返回0。 有谁可以帮我解决这个问题?