2011-08-26 4 views
2

C#시간대의 날짜 시간

DateTime.Now.Day 대. DateTime.Now.Date.Day => 실제 차이점은 무엇입니까? 내가 PST 구역이 말을 나는 말 들어

오후 8시 - 내가 말 들어

DateTime.Now.Day //26 
DateTime.Now.Date.Day //26 

전화 8월 26일, 내가 EST이 영역라고 생각하면 오후 8시 - 8월 26일, 내가

전화
DateTime.Now.Day //27 
DateTime.Now.Date.Day //27 

나는 어떤 PST/EST/CST 표준 시간대, 어떤 생각에서나 일관 될 수있는 하루를 사용하기 위해 날짜/시간에서 날짜를 얻으려고합니까?

답변

3

아무런 차이가 없습니다 (DateTime Structure 설명서 참조). .Date 식별자는 작업중인 DateTime 개체의 시간 정보를 단순히 제거합니다.

시간이 일정한 경우 UTC 시간과 DateTime.UtcNow 속성을 사용하십시오.

+0

감사합니다. DateTime.지금 - 서버의 코드가 서버 측 코드에서 오는 경우 서버의 시간을 알 수 있습니까? 예를 들어 서버가 PST 영역에있는 경우 EST에 PST 날짜 시간 값을주고 그 반대의 경우도 마찬가지입니까? – Sharpeye500

+1

'DateTime.Now'는 현재 시간대에 상관없이 서버의 현재 컴퓨터/시스템 시간을 제공합니다. – qJake

3

짧은 대답 : 사용 DateTime.UtcNow.

긴 답 : 표현의 용어와 유형 시스템에서

브레이크를 아래로 :

DateTime 몇 정적 회원들과 값 형식입니다. 그 중 한 명은 Now입니다. 정적 Now 속성은 현재 시간 값이 채워진 DateTime 구조체의 인스턴스를 반환합니다. 하지만 여전히 DateTime 유형 인스턴스입니다.

Date 멤버는 DateTime 유형의 인스턴스에서 사용할 수 있으며 시간 구성 요소가 0 인 값으로 새 DateTime 인스턴스를 반환합니다. 하지만 여전히의 DateTime 유형 인스턴스입니다.

DateTime 유형의 인스턴스에서 Day 멤버를 사용할 수 있으며 해당 월의 정수를 반환합니다.

우선 DateTime.Now.Date.DayDateTime.Now.Day 사이에 차이가 있는지 알고 싶습니다. 논리적으로 아무 것도 없다고 생각 하겠지만 Now 속성에서 한 가지 지적하고 싶습니다. 그것은 마법이 아닙니다. Now 속성에 액세스하고 .Date.Day 표현식을 실행하는 동안 코드가 실행되고 그 시간이지나갑니다. 그 시간 동안 원래 Now 값이 사용되지 않습니다. 이 표현식은 매우 빠르며 언제든지 —에 시간이 걸리지 만 0이 아닙니다. 조심하지 않으면 경쟁 조건을 만들 수 있습니다.

두 번째로, 시간대 및 일관된 날짜에 대해 알고 싶습니다. 여기에있는 트릭은 나열된 미국 표준 시간대에 대해서만 신경을 쓰는지, 어떤 영역에서든 자정에 언제든지 있을지 여부입니다. 하지만 실제로 가장 좋은 옵션은 DateTime 데이터 형식의 다른 멤버 인 : .UtcNow 속성을 살펴 보는 것입니다. 이 값은 현재 시간대에 관계없이 동일한 값을 반환합니다. 모든 시간대에서 일관성있는 시간을 평가하는 데 사용할 수 있습니다.

관련 문제