小编ash*_*ash的帖子

NodaTime中的System.TimeZoneInfo.IsDaylightSavingTime等价物是什么?

System.TimeZoneInfo有一个名为IsDaylightSavingTime的方法,该方法接受DateTime对象,如果指定的日期时间落在该时区的DST中,则返回true.在NodaTime中是否有相同的功能或其他方式来实现相同的结果?

timezone datetime dst nodatime

8
推荐指数
1
解决办法
996
查看次数

使用NodaTime将无效(跳过)日期时间值转换为UTC

我想要完成的是将DateTime(从假设在EST/EDT中的字符串解析)转换为UTC.我正在使用NodaTime,因为我需要使用Olson时区.

使用NodaTime的ZoneLocalMappingResolver将无效(跳过)DateTime转换为UTC不会转换输入的分钟和秒部分,因为我已将CustomResolver配置为返回间隙后的间隔开始.NodaTime似乎没有等效的TimeZoneInfo.IsInvalidTime.

如何使用NodaTime将跳过的日期时间值转换为UTC并匹配下面的Utils类中的GetUtc()方法的结果?(Utils.GetUtc方法使用System.TimeZoneInfo而不是NodaTime)

这是测试用例:

[TestMethod]
public void Test_Invalid_Date()
{
    var ts = new DateTime(2013, 3, 10, 2, 15, 45);

    // Convert to UTC using System.TimeZoneInfo
    var utc = Utils.GetUtc(ts).ToString(Utils.Format);

    // Convert to UTC using NodaTime (Tzdb/Olson dataabase)
    var utcNodaTime = Utils.GetUtcTz(ts).ToString(Utils.Format);

    Assert.AreEqual(utc, utcNodaTime);
}
Run Code Online (Sandbox Code Playgroud)

这就是我得到的:

Assert.AreEqual失败.预计:<2013-03-10 07:15:45.000000>.实际:<2013-03-10 07:00:00.000000>.

这是Utils类(也在github上):

using System;

using NodaTime;
using NodaTime.TimeZones;

/// <summary>
/// Functions to Convert To and From UTC
/// </summary>
public class Utils
{
    /// <summary>
    /// The date …
Run Code Online (Sandbox Code Playgroud)

c# timezone datetime dst nodatime

6
推荐指数
1
解决办法
1095
查看次数

标签 统计

datetime ×2

dst ×2

nodatime ×2

timezone ×2

c# ×1