답변:
Console.WriteLine(DateTime.UtcNow.ToString("s") + "Z");
2009-11-13T10 : 39 : 35Z
Z는 이 때문이다
시간이 UTC 인 경우 공백없이 시간 바로 뒤에 'Z'를 추가합니다. 'Z'는 제로 UTC 오프셋에 대한 영역 지정자입니다. 따라서 "09:30 UTC"는 "09 : 30Z"또는 "0930Z"로 표시됩니다. "14:45:15 UTC"는 "14 : 45 : 15Z"또는 "144515Z"입니다.
int hours = TimeZoneInfo.Local.BaseUtcOffset.Hours;
string offset = string.Format("{0}{1}",((hours >0)? "+" :""),hours.ToString("00"));
string isoformat = DateTime.Now.ToString("s") + offset;
Console.WriteLine(isoformat);
주의해야 할 두 가지 : + 또는-는 시간 후에 필요하지만 분명히 +는 양수에 표시되지 않습니다. 위키 백과에 따르면 오프셋은 + hh 형식 또는 + hh : mm 일 수 있습니다. 나는 단지 몇 시간을 지켰다.
내가 아는 한, RFC1123 (HTTP 날짜, "u"포맷터)은 시간대 오프셋을 제공하기위한 것이 아닙니다. 모든 시간은 GMT / UTC입니다.
Console.WriteLine(DateTime.UtcNow.ToString("o"));
Console.WriteLine(DateTime.Now.ToString("o"));
출력 :
2012-07-09T19:22:09.1440844Z
2012-07-09T12:22:09.1440844-07:00
"o"형식은 DateTime 대 DateTimeOffset에서 다릅니다.
DateTime.UtcNow.ToString("o") -> "2016-03-09T03:30:25.1263499Z"
DateTimeOffset.UtcNow.ToString("o") -> "2016-03-09T03:30:46.7775027+00:00"
내 마지막 대답은
DateTimeOffset.UtcDateTime.ToString("o") //for DateTimeOffset type
DateTime.UtcNow.ToString("o") //for DateTime type
C # 6+에서는 문자열 보간을 사용하여 더 간결하게 만들 수 있습니다.
$"{DateTime.UtcNow:s}Z"
봐 여기 "U"와 "의"패턴을. 첫 번째는 'T'구분 기호가없고 두 번째는 시간대 접미사가 없습니다.
Salesforce REST API 쿼리 datetime 형식과 잘 작동합니다.
DateTime now = DateTime.UtcNow;
string startDate = now.AddDays(-5).ToString("yyyy-MM-ddTHH\\:mm\\:ssZ");
string endDate = now.ToString("yyyy-MM-ddTHH\\:mm\\:ssZ");
//REST service Query
string salesforceUrl= https://csxx.salesforce.com//services/data/v33.0/sobjects/Account/updated/?start=" + startDate + "&end=" + endDate;
// https://csxx.salesforce.com/services/data/v33.0/sobjects/Account/updated/?start=2015-03-10T15:15:57Z&end=2015-03-15T15:15:57Z
문제없이 Salesforce에서 결과를 반환합니다.
분할 할 수 있으며 더 많은 코드가 필요하지만 원하는 방식으로 작동합니다.
DateTime year = DateTime.Now.Year;
DateTime month = DateTime.Now.Month;
DateTime day = DateTime.Now.Day;
요법.
드디어:
Console.WriteLine(year+month+day+etc.);
이것은 그것을 처리하는 매우 대담한 방법입니다 ...
UtcNow.ToString(s)+Z잘못된 것임을 알고 있습니다. ISO8601은 RoundTrip 옵션에서 지원됩니다ToString("O"). 또한 수락 된 답변은 일광 절약 시간대를 포함 할 수있는 실제 datetime 값을 사용하는 것보다 항상 시간대 Z를 제공하는 datetime의 UTC 값을 사용한다는 점을 지적합니다. 수락 된 답변을 변경 하시겠습니까?