現在のカルチャーフォーマットのデフォルトでNODA Time OffSetDateTimeからDateTimeOffset文字列を作成する方法

StackOverflow https://stackoverflow.com//questions/23019131

質問

Noda Time LocalDatetime MyLocalDateTimeを持っているとし、myOffset変数をオフセットします。ISO8601フォーマットでDateTimeOffSet文字列を作成するには

を使用します
var offsetDateTimePattern = OffsetDateTimePattern.Create(OffsetDateTimePattern.ExtendedIsoPattern.PatternText, CultureInfo.InvariantCulture, defaultOffsetDateTime);
var resDateTimeOffsetISO8601 = offsetDateTimePattern.Format(new OffsetDateTime(myLocalDateTime, myOffset));
.

現在、現在のカルチャフォーマットのデフォルトでDateTimeOffset文字列を作成したいです。

アメリカの場合、「4/10/2014 3:03:11 PM -07:00」のようなものになるでしょう。私は、DateTime PartのためにCurrentCultureを使用して「G」パターンの組み合わせを使用してオフセットのための「M」フォーマットを使って考えていました。どうやってそれをしますか?パターンテキストとして「G M」を使用するようなもの?

var offsetDateTimePatternLocal = OffsetDateTimePattern.Create("G m", CultureInfo.CurrentCulture, defaultOffsetDateTime);
var resDateTimeOffsetCurrentCulture = offsetDateTimePattern.Format(new OffsetDateTime(myLocalDateTime, myOffset));
.

(ここでの解析質問がここで尋ねられました: http://goo.gl/oveqjt

役に立ちましたか?

解決

"G" Formatterの文化対応行動を保ちたい場合は、できる限り最善を考えることができます。

var ldtPattern = LocalDateTimePattern.CreateWithCurrentCulture("G");
var offsetPattern = OffsetPattern.CreateWithCurrentCulture("m");
var result = ldtPattern.Format(localDateTime) + " " + offsetPattern.Format(resOffset);
.

問題は、OffsetDateTimePatternでは文化対応の標準パターンを持っていないことです。詳細については、ユーザガイドを参照してください。私はこれが将来のバージョンで修正されるべきだと思います。

固定パターンでフォーマットしたい場合は、できます。しかし、それからあなたは事前に文化のためのパターンを知る必要があるでしょう。

var pattern = OffsetDateTimePattern.Create("M/dd/yyyy h:mm:ss tt o<m>", CultureInfo.InvariantCulture, defaultOffsetDateTime);
var result = pattern.Format(new OffsetDateTime(localDateTime, resOffset));
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top