假设我有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”。我正在考虑使用“g”模式的组合,其中具有日期时间的CurrentCulture部分,后跟偏移量“M”格式。我该怎么做?类似于使用“g m”作为模式文本?

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

(此处有关解析问题: http://go.gl/oveqjt

有帮助吗?

解决方案

我认为如果你想保留的文化感知行为,你可以做最好的,你可以做的,所以formationd的文化感知行为是这样的:

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

问题是,生成的icetagcode没有任何文化感知的标准模式。有关详细信息的用户指南。我认为这应该在将来的版本中纠正。

如果要使用固定模式格式化,可以。但是,你需要提前了解文化的模式。

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