DateTime으로 최신 시간을 어떻게 지정할 수 있습니까?
내가 사용하고 System.DateTime
사용자가 날짜 범위를 선택할 수 있도록 개체를. 사용자는 타사 캘린더를 사용하여 날짜 (시간 아님) 만 선택할 수 있으므로 날짜 이후에 사용할 시간 (예 : 00:00:00 또는 23:59:59)을 자동으로 지정해야합니다. 선택됩니다.
달력 선택기에 의해 날짜가 DateTime 객체로 이미 저장된 후 시간을 어떻게 지정할 수 있습니까? 나는 AddHours, AddMinutes, AddSeconds
방법을 사용할 수 있지만 그것들은 00:00:00이 아닐 수도있는 현재 시간에 상대적입니다.
는 startDate
00:00:00 시간을 가지고해야합니다 endDate
전체 일을 설명하는 23시 59분 59초의 시간이있다.
이미 DateTime
생성 된 객체가 있고 해당 날짜의 시간을 11:59:59 PM으로 바꾸려면 .Date
속성을 사용하여 시간이 00:00:00으로 설정된 날짜를 가져온 다음 시간을 추가 할 수 있습니다. 분과 초. 예를 들면 :
var dt = yourDateInstance.Date.AddHours(23).AddMinutes(59).AddSeconds(59);
최근 시간으로 오후 11:59:59를 의미하는 경우 다음과 같이 작동합니다.
var dt = new DateTime(Now.Year, Now.Month, Now.Day, 23, 59, 59);
오늘의 마지막 순간을 얻으려면 :
DateTime d = new DateTime(Now.Year, Now.Month, Now.Day);
d = d.AddDays(1);
d = d.AddTicks(-1);
귀하의 편집에 대한 응답으로 제가 수행 할 작업은 다음과 같습니다.
DateTime start = new DateTime(Now.Year, Now.Month, Now.Day);
DateTime end = start.AddDays(1).AddTicks(-1);
// Or - just use end = start.AddDays(1), and use a < for comparison
DateTime d = DateTime.Today.AddDays(1).AddTicks(-1);
귀하의 질문은 이미 답변되었지만 IMHO의 더 나은 방법은 범위 끝에서 틱, 초 또는 무엇이든 빼려고 시도하지 않고 엄격히 미만을 사용하여 비교하는 것입니다.
따라서 시간을 무시하고 startDate에서 endDate 까지 포함 범위의 모든 날짜를 원하는 경우 C #에서 다음을 사용할 수 있습니다.
if ((myDate >= startDate.Date) && (myDate < endDate.Date.AddDays(1)))
{
// ... it's in the range
}
또는 T-SQL에서 @StartDate 및 @EndDate가 정확히 자정이라고 가정하면 다음과 같습니다.
WHERE SomeDate >= @StartDate AND SomeDate < DATEADD(d,1,@EndDate)
최신 정보
댓글에 대한 포괄적 인 범위를 표시하도록 예제를 업데이트했습니다.
DateTime startDate = DateTime.Today;
DateTime stopDate = startDate.AddDays(1).AddTicks(-1);
참고 DateTime.Today
로 (MSDN에서) 반환
System.DateTime은 오늘 날짜로 설정되고 시간 구성 요소는 00:00:00으로 설정됩니다.
따라서 다른 사람들이 언급했듯이 하루를 더한 다음 가장 작은 시간 양자 (틱)를 빼면 현재 날짜에 대해 가능한 마지막 시간을 얻습니다.
물론 코드가 실행되는 위치와 사용자가있는 위치에 따라 TimeZones 등에 대해 생각해야 할 수도 있습니다. UTC 시간은 좋을 수 있지만 코드가 실행되는 위치에 따라 하루 (어느 쪽이든)를 방해 할 수 있습니다.
다른 답변을 기반 으로이 편리한 확장 방법을 만들었습니다.
public static class DateTimeExtensions
{
public static DateTime EndOfDay(this DateTime dateTime)
{
return dateTime.Date.AddDays(1).AddTicks(-1);
}
}
예를 들면
DateTime.Now.Date.AddDays(1).AddSeconds(-1)
또는 AddTicks/AddMilliseconds/AddMinutes
... 필요한 정밀도에 따라.
이것을 사용하십시오
DateTime YourNewDate = new DateTime (YourDate .Year, YourDate .Month, YourDate .Day, 23, 59, 59, 99);
yourDateInstance.CloseDate = yourDateInstance.CloseDate.Date.AddDays (1) .AddMilliseconds (-1);
이것은 당신에게 예상 된 결과를 줄 것입니다 :
DateTime startDate= DateTime.Now.Date;
DateTime endDate= startDate.AddDays(2).Add(new TimeSpan(23, 59, 59));
//startDate: 28/9/2017 0:0:0 endDate: 29/9/2017 23:59:59
참고 URL : https://stackoverflow.com/questions/821445/how-can-i-specify-the-latest-time-of-day-with-datetime
'Program Tip' 카테고리의 다른 글
android : 링크를 클릭 할 수있는 textview의 html (0) | 2020.11.06 |
---|---|
AngularJS : 사용자 지정 필터 및 ng-repeat (0) | 2020.11.06 |
char 배열을 비우는 방법? (0) | 2020.11.06 |
Ruby on Rails에서 쿼리 문자열 인 것처럼 문자열 구문 분석 (0) | 2020.11.06 |
파이썬에서 문자열을 제목 대소 문자로 변환하는 방법은 무엇입니까? (0) | 2020.11.06 |