DateTime
변수 “s” 의 시간 만 어떻게 변경할 수 있습니까?
DateTime s = some datetime;
답변
DateTime 값을 변경할 수 없습니다-변경할 수 없습니다. 그러나 새 값을 가지도록 변수를 변경할 수 있습니다. 시간 만 변경하는 가장 쉬운 방법은 관련 시간으로 TimeSpan을 만들고 DateTime.Date 속성을 사용하는 것입니다.
DateTime s = ...;
TimeSpan ts = new TimeSpan(10, 30, 0);
s = s.Date + ts;
s
이제 같은 날짜이지만 오전 10시 30 분입니다.
DateTime
양방향으로 “순진한”Gregorian 시간을 나타내는 일광 절약 시간제 전환 을 무시합니다 ( DateTime
문서의 설명 섹션 참조 ). 유일한 예외는 .Now
및 .Today
:이 이벤트가 발생할 때이를 반영하는 현재 시스템 시간을 검색합니다.
이것은 현재 생산 준비가 된 Noda Time 프로젝트 를 시작하도록 동기를 부여한 것입니다 . 그 ZonedDateTime
유형은 “인식”한다 에 연결하여 tz
데이터베이스 항목 .
답변
좋아, 내 제안, 확장 방법으로 다이빙하고 있습니다.
public static DateTime ChangeTime(this DateTime dateTime, int hours, int minutes, int seconds, int milliseconds)
{
return new DateTime(
dateTime.Year,
dateTime.Month,
dateTime.Day,
hours,
minutes,
seconds,
milliseconds,
dateTime.Kind);
}
그런 다음 전화 :
DateTime myDate = DateTime.Now.ChangeTime(10,10,10,0);
이 확장 프로그램은 새로운 날짜 개체를 반환하므로이 작업을 수행 할 수 없습니다.
DateTime myDate = DateTime.Now;
myDate.ChangeTime(10,10,10,0);
그러나 당신은 이것을 할 수 있습니다 :
DateTime myDate = DateTime.Now;
myDate = myDate.ChangeTime(10,10,10,0);
답변
s = s.Date.AddHours(x).AddMinutes(y).AddSeconds(z);
이러한 방식으로 원하는 시간에 새로운 시간, 분, 초를 삽입하면서 날짜를 보존 할 수 있습니다.
답변
짧막 한 농담
var date = DateTime.Now.Date.Add(new TimeSpan(4, 30, 0));
오늘 날짜를 4:30:00 시간으로 되돌리려면 DateTime을 바꾸십시오.
답변
DateTime은 변경할 수없는 유형이므로 변경할 수 없습니다 .
그러나 이전 인스턴스를 기반으로 새 DateTime 인스턴스를 만들 수 있습니다. 귀하의 경우 Date 속성이 필요한 것처럼 들리며 시간을 나타내는 TimeSpan을 추가 할 수 있습니다.
이 같은:
var newDt = s.Date + TimeSpan.FromHours(2);
답변
다른 DateTime
객체 에 이미 시간이 저장되어 있으면이 Add
방법을 사용할 수 있습니다 .
DateTime dateToUse = DateTime.Now();
DateTime timeToUse = new DateTime(2012, 2, 4, 10, 15, 30); //10:15:30 AM
DateTime dateWithRightTime = dateToUse.Date.Add(timeToUse.TimeOfDay);
이 TimeOfDay
속성은 TimeSpan
객체이며 Add
메서드에 전달 될 수 있습니다 . 그리고 우리 Date
는 dateToUse
변수 의 속성을 사용하기 때문에 날짜를 얻고 시간 범위를 추가합니다.
답변
가장 간단한 해결책 :
DateTime s = //some Datetime that you want to change time for 8:36:44 ;
s = new DateTime(s.Year, s.Month, s.Day, 8, 36, 44);
그리고 특정 날짜 및 시간 형식이 필요한 경우 :
s = new DateTime(s.Year, s.Month, s.Day, 8, 36, 44).ToString("yyyy-MM-dd h:mm:ss");
