문제

을 만들고 싶으면 어떻게 해야 하 DateTime var 문자열에서는 이미 이에 대한 조정 UTC?나는 실행하는 이 컴퓨터에서 설정 BST(GMT+1)입니다.실행하는 경우 다음과 같은 라인의 코드:

DateTime clientsideProfileSyncStamp = Convert.ToDateTime("20-May-2011 15:20:00");

다음 값을 사용에 대해 테스트 데이터베이스를 들고(UTC)값이 다음 그것이 나타나는 것을 변환합니다.ToDateTime()가 실제로 나 UTC 값의 14:20.나는 그것을 원하지 않지 전환니다-나는 그것을 받아들이는 내 DateTime 문자열에서 이미 UTC.

감사합니다.

도움이 되었습니까?

해결책

문자열을 구문 분석하고 문자열에 지정된 시간대가 없을 때 UTC 시간을 가정하도록 지정하십시오.

DateTime clientsideProfileSyncStamp =
  DateTime.Parse(
    "20-May-2011 15:20:00",
    CultureInfo.CurrentCulture,
    DateTimeStyles.AssumeUniversal
  );
.

다른 팁

사용

DateTimeOffset.Parse
.

언더 광고 DateTimeOffset 유형은 지점을 나타냅니다.시간대의 차이에 관계없이 시간대에 관계없이 '타임 스탬프'가 필요로하는 Datetime보다 선호도가 사용되어야합니다.

@ guffa의 대답은 매우 좋지만 추가 답변을 추가하고 싶습니다. DateTime 문자열이 "2017-11-27T05 : 30 : 00.000z"처럼 보이면 Assumeuniversal이 작동하지 않습니다. 이것을 시도하십시오 :

    DateTime.Parse("2017-11-27T05:30:00.000Z", null, System.Globalization.DateTimeStyles.AdjustToUniversal);
.

Assumeuniversal과 Adjustiversal 사이에는 약간의 차이가 있습니다. Assumeuniversal 및 Adjustuiversal 간의 차이점

추가 Z DateTime 문자열:

DateTime clientsideProfileSyncStamp = Convert.ToDateTime("20-May-2011 15:20:00Z");
Console.Write(clientsideProfileSyncStamp.ToUniversalTime()); // 20-May-2011 15:20:00

예외없이 구문 분석 오류를 처리 할 수있는 TryParse Variant를 잊지 마십시오.

DateTime clientsideProfileSyncStamp;
DateTime.TryParse(
    "20-May-2011 15:20:00",
    System.Globalization.CultureInfo.CurrentCulture,
    System.Globalization.DateTimeStyles.AssumeUniversal,
    out clientsideProfileSyncStamp
);
.

또한 ParseExact 또는 TryParseExact를 사용하지 않는 경우 Per KindLocal이므로 ToUniversalTime()

를 사용할 수도 있습니다.
clientsideProfileSyncStamp.ToUniversalTime();
.

DateTime.Parse() 또는 DateTime.TryParse()

var clientsideProfileSyncStamp = DateTime.Parse("20-May-2011 15:20:00");
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top