标签: nodatime

如何将一个时间和奥尔森时区转换为另一个奥尔森时区的时间?

我有一个输入:

  1. 时间(上午 8:00)
  2. 奥尔森时区(America/New_York)

我需要将时间转换为另一个奥尔森时区(美国/洛杉矶)

.net 或 nodatime 中进行该转换的最佳方法是什么?我基本上是在 C# 中寻找与此方法等效的方法:

  var timeInDestinationTimeZone = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(CurrentSlot.Date, TimeZoneInfo.Local.Id,
                                                                            room.Location.TimeZone.TimeZoneName);
Run Code Online (Sandbox Code Playgroud)

但上面的 .Net 方法仅适用于 Windows 时区名称(并且我有 Olson 名称)

c# datetime nodatime

3
推荐指数
1
解决办法
2626
查看次数

将NodaTime转换为Unix时间戳以及LocalDateTime的重要性

我目前正在使用NodaTime,这是基于我在C#DateTime课堂上处理时区的挫败感.到目前为止,我真的很高兴.

public static string nodaTimeTest(string input)
{
    var defaultValue = new OffsetDateTime(new LocalDateTime(2000, 1, 1, 0, 0), Offset.Zero);
    var pattern = OffsetDateTimePattern.Create("yyyy-MM-dd'T'HH:mm:sso<m>", CultureInfo.InvariantCulture, defaultValue);
    var result = pattern.Parse(input).Value;

    return result.ToString();
}
Run Code Online (Sandbox Code Playgroud)

我有三个具体问题.以上是我在dateTime字符串中解析的方法.我有一个format字符串,它允许我如何解析输入.我的问题是:


我的意思LocalDateTime(..)是什么?我使用的方法是Matt Johnson的Stack 示例,他带来了日期2000, 1, 1, 0, 0.我觉得这很奇怪,因为我知道大多数日期类使用Epoch时间1970, 1, 1, 0 ,0,所以我改变了我的方法以包含Epoch日期,但输出是相同的:

在此输入图像描述


如何将时间转换为Unix时间戳?它似乎没有内置的方法.


使用此方法:

    public static string nodaTimeTest6(string input, int timeZone)
    {
        // var defaultValue = new OffsetDateTime(new LocalDateTime(2000, 1, 1, 0, 0), Offset.Zero);
        var defaultValue = new …
Run Code Online (Sandbox Code Playgroud)

c# nodatime

3
推荐指数
1
解决办法
2133
查看次数

野田:看看是否处于夏令时

如何查明我当前的当地时间是否根据夏令时进行了调整。基本上相当于NodaTimeDateTime.Now.IsDaylightSavingTime()中的

我看到了这个,但无法翻译给野田...

nodatime

3
推荐指数
1
解决办法
1086
查看次数

如何使用事件来计算eas中重复事件的结束日期

任何人都可以告诉我根据事件发生次数和事件发生的模式计算重复事件的结束日期的最佳方法.

例如:我的活动开始日期为2014年7月10日(星期二),每周星期二开始.此事件将在10次发生后结束(比方说).因此,我的方法应该返回结束日期:12/09/2014

该方法还应考虑更复杂的情况,例如假设事件每年在10月的第一个星期一发生并且总共发生10次.

datetime exchange-server activesync c#-4.0 nodatime

3
推荐指数
1
解决办法
497
查看次数

如何在NodaTime中获得“年/月的开始”?

我知道有DateTimeZone.AtStartOfDay方法,但是有没有类似的方法来开始年/月?我知道最简单的方法是将它们硬编码为“X 的第一天和 30 秒”(我做到了LocalDateTime start = LocalDateTime.FromDateTime(new DateTime(2014, 1, 1, 0, 0, 1, DateTimeKind.Utc));),但我认为这远非最佳实践

.net datetime nodatime

3
推荐指数
2
解决办法
1488
查看次数

如何将刻度转换为 momentjs 对象

我正在使用 nodatime 并返回刻度。如何使用 momentjs 将刻度转换为使用和格式?

public JsonResult Foo()
{
  var now = SystemClock.Instance.Now.Ticks;
  return Json(now, JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)

它返回long14598788048897648.

.net javascript c# nodatime momentjs

3
推荐指数
1
解决办法
7937
查看次数

使用NodaTime从字符串创建时间偏移量

我有一个字符串代表特定客户的偏移量.一个例子是UTC+1:00.它总是相对于UTC的偏移量,因此字符串将始终以后UTC+-然后是格式的偏移量开始hh:mm.

问题是,如何获取此字符串并将其转换为偏移量?我不想要一个带有偏移量的日期和时间对象,我只想要一个象征着我的偏移的对象,然后我可以将其应用于日期,这完全是不同的.

在标题上说,我正在寻找使用NodaTime.

.net c# datetime nodatime

3
推荐指数
1
解决办法
191
查看次数

反序列化 NodaTime LocalDate 时出现异常

我在反序列化包含 JSON 序列化 LocalDate 对象的 JSON 字符串时遇到异常(请参阅本问题末尾的 JSON 片段)。

这就是我反序列化的方式:

var settings = new JsonSerializerSettings();
settings.ConfigureForNodaTime(DateTimeZoneProviders.Tzdb);
var output = JsonConvert.DeserializeObject<MyObject>(json, settings);
Run Code Online (Sandbox Code Playgroud)

我看到这个异常消息:

NodaTime.Utility.InvalidNodaDataException:“解析 LocalDate 时出现意外标记。需要字符串,得到 StartObject。'

这是 MyObject 类:

class MyObject
{
    public LocalDate Date { get; set; }
    public string AnotherProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这是我尝试反序列化的 JSON 片段:

{
    "Date": {
        "Calendar": {
            "Id": "ISO",
            "Name": "ISO",
            "MinYear": -9998,
            "MaxYear": 9999,
            "Eras": [{
                "Name": "BCE"
            }, {
                "Name": "CE"
            }]
        },
        "Year": 2017,
        "Month": 7,
        "Day": 10,
        "DayOfWeek": …
Run Code Online (Sandbox Code Playgroud)

c# serialization json nodatime

3
推荐指数
1
解决办法
2090
查看次数

为什么 NodaTime.LocalDate.MinIsoValue 的年份为“9999”

static 属性NodaTime.LocalDate.MinIsoValue具有值9999-01-01,而我期望它具有与default(LocalDate)is相同的值0001-01-01。这个值有什么原因或者是一个错误吗?

我正在使用 NodaTime 版本 2.4.4。

c# nodatime

3
推荐指数
1
解决办法
305
查看次数

如何在给定日期的一周内获得工作日?

这个问题可能不是最清楚的,但这是我需要的:

var date = new LocalDate(2020, 05, 05);
Run Code Online (Sandbox Code Playgroud)

我需要给定日期所在周的星期一和星期五的日期。

.net nodatime

3
推荐指数
1
解决办法
128
查看次数