현재 문화 형식의 기본값의 Noda Time OffsetDateTime에서 DateTimeOffset 문자열을 생성하는 방법은 무엇입니까?

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

문제

NODA 시간 LOCALDATETIME MyLocalDateTime 및 Offset 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"형식 이옵니다.어떻게해야합니까?패턴 텍스트로 "Gm"을 사용하는 것과 같은 것입니까?

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

(관련 구문 분석 질문이 여기에 묻습니다 : http://goo.gl/oveqjt )

도움이 되었습니까?

해결책

"G" 포맷터의 문화적 인식 동작을 보존하고 싶다면 할 수있는 최선은 다음과 같습니다.

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