Study/C#, Winform

[C#] 시간 관련 (DateTime, TimeSpan, Stopwatch)

2022. 8. 9. 19:27
목차
  1. DateTime (System.DateTime)
  2. TimeSpan (System.TimeSpan)
  3. Stopwatch (System.Diagnotics.Stopwatch)


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
  • DateTime (System.DateTime)
  • TimeSpan (System.TimeSpan)
  • Stopwatch (System.Diagnotics.Stopwatch)
'Study/C#, Winform' 카테고리의 다른 글
  • [C#] Enumerable 에서 중복 데이터 삭제 (Distinct)
  • [C# Winform] 스크롤바 크기 (넓이)
  • [C# Winform] Context Menu를 Button 옆에 띄우기
  • [C#] MemoryStream, StreamWriter, StreamReader, BinaryWriter, BinaryReader
Eskeptor
Eskeptor
Eskeptor
Hello World
Eskeptor
전체
오늘
어제
  • 분류 전체보기 (138)
    • Computer (5)
      • Linux (1)
      • Hardware (2)
      • Software (0)
      • Tips (1)
      • Website (0)
    • Mobile (1)
      • Application (1)
    • Study (108)
      • Android (9)
      • C언어 (45)
      • C++ (17)
      • Unity 5(유니티5) (11)
      • Qt 프로그래밍 (2)
      • MFC (12)
      • C#, Winform (12)
    • My World (24)
      • OpenPad(Android) (12)
      • 한글 패치 (1)
      • C#으로 만든 귀요미들 (5)
      • MFC로 만든 귀요미들 (6)
    • Life Goes On (0)
      • Hip Hop (0)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

인기 글

태그

  • 자바
  • 메모장
  • 비행기
  • 유니티
  • C#
  • 기초
  • C++
  • 안드로이드
  • Unity
  • 슈팅게임
  • 오픈패드
  • 왕초보
  • 배열
  • 프로그래밍
  • Android
  • Tetris
  • 초보
  • 테트리스
  • 강의
  • Java
  • MFC
  • openpad
  • 기본
  • c++11
  • 포인터
  • C언어
  • 자료구조
  • 알고리즘
  • 만들기
  • 강좌

최근 댓글

최근 글

hELLO · Designed By 정상우.
Eskeptor
[C#] 시간 관련 (DateTime, TimeSpan, Stopwatch)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.