Programming/.NET

System.DateTime를 이용해 시간을 생성하는 방법은 다음과 같습니다.

 

DateTime dt = new DateTime(2015, 01, 01);

 

현재 시간을 알려면 Now 속성을 사용합니다.

 

Console.WriteLine(DateTime.Now.ToString());

 

UtcNow 속성은 UTC기준 현재 시간을 의미합니다.

 

Console.WriteLine(DateTime.UtcNow.ToString());

 

UTC(Universal Time, Coordinated)는 협정세계시로서 GMT(Greenwich Mean Time)라는 그리니치 평균시와 함께 세계 표준시로 사용되고 있습니다. UTC는 영국 그리니치 천문대가 있는 위치의 0도를 0시기준으로 하고 동쪽지역 분기선 이내에는 시간이 증가하고 서쪽으로는 시간이 감소하는 형태를 이루고 있습니다. 따라서 동쪽 분기선 안에 있는 대한민국은 +9시간을 해야하고 이시간이 한국 표준시(KST : Korea Standard Time)가 됩니다.

 

시간을 임의로 더하거나 빼고싶다면 AddMonths, AddDays등의 메서드를 이용할 수 있습니다.

 

DateTime plusMonth = DateTime.Now.AddDays(1);
DateTime minusHour = DateTime.Now.AddHours(-1);

 

이때 양수는 그만큼의 시간을 더하고 음수는 그만큼의 시간을 감소시킵니다. 이것 외에도 DateTime끼리 연산하는 경우도 있으나 이때는 사칙연산중 -만 허용하며 결과값은 TimeSpan으로 받아야 합니다.

 

DateTime now = DateTime.Now;
DateTime plusMonth = DateTime.Now.AddMonths(-1);

TimeSpan ts = now - plusMonth;

 

좀더 세밀한 시간을 알고자 한다면 Ticks속성을 사용할 수 있습니다. Ticks는 1년 1월 1일 12시부터 지금까지 100나노초 간격으로 흐른시간을 나타냅니다.

 

Console.WriteLine(DateTime.Now.Ticks.ToString());

 

그런데 이 Ticks값은 유닉스계열이나 기타 다른 플렛폼에서 기준으로 하는 1970년 1월 1일과는 다르기 때문에 만약 이런 플렛폼들과 호환성을 맞추려 한다면 1970년만큼의 시간을 더해야합니다. 다행이 100나노초단위는 같으므로 다음과 같이 처리할 수 있습니다.

 

Console.WriteLine(((DateTime.UtcNow.Ticks - 621355968000000000) / 1000).ToString());

 

 

'Programming > .NET' 카테고리의 다른 글

[C#] Encoding / BitConverter  (0) 2018.06.19
[C#] fixed  (0) 2018.06.13
[C#] DateTime  (0) 2018.05.29
[C#] 생성자와 소멸자  (0) 2018.05.23
[C#] 개체의 생성과 해제  (0) 2018.05.15
[C#] 호출자 정보 (CallerMemberName / CallerFilePath / CallerLineNumber)  (0) 2018.05.08
0 0