DateTime (System.DateTime)
C#에서 자주 사용하게 되는 시간 관련 구조체(Struct) 입니다.
public DateTime(long ticks)
public DateTime(long ticks, DateTimeKind kind)
public DateTime(int year, int month, int day)
public DateTime(int year, int month, int day, Calendar calendar)
public DateTime(int year, int month, int day, int hour, int minute, int second)
public DateTime(int year, int month, int day, int hour, int minute, int second, DateTimeKind kind)
public DateTime(int year, int month, int day, int hour, int minute, int second, Calendar calendar)
public DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond)
public DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, DateTimeKind kind)
public DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, Calendar calendar)
public DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, Calendar calendar, DateTimeKind kind)
이렇게 생성자를 사용하여 직접 생성할 수 있습니다.
생성자의 경우 F12(정의로 이동)를 이용하여 들어가면 생성자의 설명과 각 인자들의 설명을 볼 수 있으니 궁금하시면 한 번씩 보시면 될듯 합니다. |
하지만 이렇게 생성자를 이용해서 생성하기 보다는 주로
DateTime dateCur = DateTime.Now;
이렇게 "DateTime.Now" (현재 시스템 시간)를 직접 받아서 시간을 출력하는 방법으로도 많이 사용합니다.
속성에는
public int Day
public int Hour
public int Millisecond
public int Minute
public int Month
public int Second
public long Ticks
public int Year
이것들을 가장 많이 사용하게 됩니다.
이것들을 활용하여 시간을 출력합니다.
DateTime dateTime = DateTime.Now;
Console.WriteLine(dateTime);
Console.WriteLine(dateTime.ToString());
Console.WriteLine(dateTime.ToString("yyyy-MM-dd tt h:mm:ss"));
결과는 모두 같습니다만 ToString을 사용하여 인자로 표준 형식 지정자를 사용하여 원하는 포멧으로 출력할 수 있습니다.
시간끼리 빼는 동작을 수행할 수도 있는데
(DateTime에서 허용하는 유일한 사칙연산)
자동으로 TimeSpan으로 계산하게 됩니다.
TimeSpan (System.TimeSpan)
주로 시간 계산(뺄셈)을 위해 사용됩니다.
public long Ticks
public double TotalDays
public double TotalHours
public double TotalMilliseconds
public double TotalMinutes
public double TotalSeconds
속성들 중에서 가장 많이 쓰이는 것은 위와 같습니다.
DateTime dateTime = DateTime.Now;
Thread.Sleep(1000); // 약 1초 정지
TimeSpan span = DateTime.Now - dateTime;
Console.WriteLine($"걸린 msec : {span.TotalMilliseconds}");
Console.WriteLine($"걸린 sec : {span.TotalSeconds}");
Stopwatch (System.Diagnotics.Stopwatch)
코딩을 한 후 특정 구간의 걸린 시간을 확인 할 때 많이 사용합니다.
직접 DateTime을 활용하여 TimeSpan 계산으로 시간을 확인할 수 있지만 더 정확한 시간차 계산을 위하여 제공하는 클래스입니다.
Stopwatch는 위와 같이 3가지 타입으로 결과 값을 도출해줍니다.
TimeSpan 형식으로 가져올 수 있고, Milliseconds로 가져올 수 있고, Tick 단위로 가져올 수 있습니다.
using System.Diagnostics;
DateTime dateTime = DateTime.Now;
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
Thread.Sleep(1000); // 약 1초 정지
stopwatch.Stop();
Console.WriteLine($"걸린 시간 : {stopwatch.ElapsedMilliseconds} ms");
Console.WriteLine($"걸린 시간 : {stopwatch.ElapsedTicks / 10000} ms");
Console.WriteLine($"걸린 시간 : {stopwatch.Elapsed.TotalMilliseconds} ms");
Stopwatch에는 StartNew라는 함수가 있는데 이 함수는 새로 인스턴스를 생성 후 Start까지 시키는 함수입니다.
using System.Diagnostics;
DateTime dateTime = DateTime.Now;
Stopwatch stopwatch = Stopwatch.StartNew();
Thread.Sleep(1000); // 약 1초 정지
stopwatch.Stop();
Console.WriteLine($"걸린 시간 : {stopwatch.ElapsedMilliseconds} ms");
Console.WriteLine($"걸린 시간 : {stopwatch.ElapsedTicks / 10000} ms");
Console.WriteLine($"걸린 시간 : {stopwatch.Elapsed.TotalMilliseconds} ms");
'Study > C#, Winform' 카테고리의 다른 글
[C#] DateTime 시간 자르기, 반올림, 반내림, 가까운 값 (1) | 2022.10.11 |
---|---|
[C#] Enumerable 에서 중복 데이터 삭제 (Distinct) (0) | 2022.10.06 |
[C# Winform] 스크롤바 크기 (넓이) (0) | 2022.10.04 |
[C# Winform] Context Menu를 Button 옆에 띄우기 (0) | 2022.09.28 |
[C#] MemoryStream, StreamWriter, StreamReader, BinaryWriter, BinaryReader (1) | 2022.08.16 |