我有一个输入:
我需要将时间转换为另一个奥尔森时区(美国/洛杉矶)
.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 名称)
我目前正在使用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) 任何人都可以告诉我根据事件发生次数和事件发生的模式计算重复事件的结束日期的最佳方法.
例如:我的活动开始日期为2014年7月10日(星期二),每周星期二开始.此事件将在10次发生后结束(比方说).因此,我的方法应该返回结束日期:12/09/2014
该方法还应考虑更复杂的情况,例如假设事件每年在10月的第一个星期一发生并且总共发生10次.
我知道有DateTimeZone.AtStartOfDay方法,但是有没有类似的方法来开始年/月?我知道最简单的方法是将它们硬编码为“X 的第一天和 30 秒”(我做到了LocalDateTime start = LocalDateTime.FromDateTime(new DateTime(2014, 1, 1, 0, 0, 1, DateTimeKind.Utc));),但我认为这远非最佳实践
我正在使用 nodatime 并返回刻度。如何使用 momentjs 将刻度转换为使用和格式?
public JsonResult Foo()
{
var now = SystemClock.Instance.Now.Ticks;
return Json(now, JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)
它返回long如14598788048897648.
我有一个字符串代表特定客户的偏移量.一个例子是UTC+1:00.它总是相对于UTC的偏移量,因此字符串将始终以后UTC跟+或-然后是格式的偏移量开始hh:mm.
问题是,如何获取此字符串并将其转换为偏移量?我不想要一个带有偏移量的日期和时间对象,我只想要一个象征着我的偏移的对象,然后我可以将其应用于日期,这完全是不同的.
在标题上说,我正在寻找使用NodaTime.
我在反序列化包含 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) static 属性NodaTime.LocalDate.MinIsoValue具有值9999-01-01,而我期望它具有与default(LocalDate)is相同的值0001-01-01。这个值有什么原因或者是一个错误吗?
我正在使用 NodaTime 版本 2.4.4。
这个问题可能不是最清楚的,但这是我需要的:
var date = new LocalDate(2020, 05, 05);
Run Code Online (Sandbox Code Playgroud)
我需要给定日期所在周的星期一和星期五的日期。
nodatime ×10
c# ×6
.net ×4
datetime ×4
activesync ×1
c#-4.0 ×1
javascript ×1
json ×1
momentjs ×1