我目前正在使用NodaTime,基於我在C#的DateTime
類中處理時區的挫折感。到目前爲止,我真的很高興。將NodaTime轉換爲Unix時間戳和LocalDateTime的重要性
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();
}
我有三個具體問題。以上是我用dateTime字符串解析的方法。我有一個format
字符串,它允許我如何解析輸入。我的問題是:
難道我的LocalDateTime(..)
是什麼?我使用的方法是Matt Johnson的Stack example,他的日期爲2000, 1, 1, 0, 0
。我覺得很奇怪,因爲大多數日期類我知道用大紀元1970, 1, 1, 0 ,0
,所以我改變了我的方法遏制大紀元日期,但輸出是相同的:
怎麼辦我將時間轉換爲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 OffsetDateTime(new LocalDateTime(2000, 1, 1, 0, 0), Offset.FromHours(timeZone));
var pattern = OffsetDateTimePattern.Create("yyyy-MM-dd'T'HH:mm:sso<m>", CultureInfo.InvariantCulture, defaultValue);
var result = pattern.Parse(input);
return result.Value.ToString();
}
我測試了NodaTime的能力,用這種方法 - 具體而言,我在想,如果我可以在抵消了定義的日期/時間解析裏面,並在同一時間,我的timeZone
輸入還允許輸入時區/偏移量。有趣的是,我的輸入timeZone
被忽略,所以抵消了我的nodaTimeTest6
輸出是輸入日期字符串:
這是期望行爲?
喬恩Skeet傳入... – Kittoes0124
'NodaTime'標記是StackOverflow的喬恩信號。通過喬恩的方式的偉大的工具..我得到代碼和運行,而不必手動找出哪個重載/方法/類使用。我特別喜歡時間和日期屬性的表現方式。例如,我可以抓住'something.Offset',它會顯示時區偏移量。喜歡它.. – theGreenCabbage