Double
이 문자열 형식으로 지정된 경우 반올림이 사용됩니다. 예 :DateTime의 형식을 밀리 초가 아닌 문자열이 잘리는 이유는 무엇입니까?
Console.WriteLine(12345.6.ToString("F0"));
출력 스트링 절단 사용로서 DateTime
포맷 그러나
12346
. 예 :
var ci = CultureInfo.InvariantCulture;
var dateTime = DateTime.Parse("2011-09-14T15:18:42.999", ci);
Console.WriteLine(dateTime.ToString("o", ci));
Console.WriteLine(dateTime.ToString("s", ci));
Console.WriteLine(dateTime.ToString("yyyy-MM-hhThh:mm:ss.f", ci));
출력
2011-09-14T15:18:42.9990000
2011-09-14T15:18:42
2011-09-14T15:18:42.9
이 동작 뒤에 추론 (있는 경우)이란 무엇입니까
? 가까운 제 반올림문자열로 포맷하기 전에 0.5 초를 추가함으로써 달성 될 수있다 :이 비트 주관적
var ci = CultureInfo.InvariantCulture;
var dateTime = DateTime.Parse("2010-12-31T23:59:59.999", ci);
Console.WriteLine(dateTime.ToString("s", ci));
var roundedDateTime = dateTime.AddMilliseconds(500);
Console.WriteLine(roundedDateTime.ToString("s", ci));
출력
2010-12-31T23:59:59
2011-01-01T00:00:00
+1, 감사합니다. 그것은 결코 생각하지 못한 차원입니다. –
그리고 새로운 날이 내년이면 반올림이 연중 최대로 이루어집니다. 대부분의 상황에서 아마도 당신이 원하는 날짜가 아닐 것입니다. –
아마도 그것에 대해 생각할 수있는 또 다른 방법 : 시간 단위는 시간이 아닌 _ 시간입니다. 시간 단위는 다음 (동일한) 단위의 시작까지 완전히 확장됩니다. 예를 들어 0.99999의 화요일은 여전히 "수요일"이 아니라 "화요일"으로 간주됩니다. – Spike0xff