안녕하세요 :)
BrityRPA 에서 개발 시에 사용되는
"DateTime" 객체 관련 정리입니다.
RPA 과제는
날짜를 고려하는 과제들이 많은데,
객체를 변수에 담아
그때 그때 추출하여 쓰면
굉장히 유용하더라구요!
[ DateTime 객체 ]
1. 현재일시
DateTime.Now
Ex)
$> DateTime.Now
=> 2023-04-26 오후 2:10:52
2. 금일
DateTime.Today
Ex)
$> DateTime.Today
=> 2023-04-26 오전 12:00:00
3. DateTime 객체에서 연,월,일,요일,연중일수 출력
RESULT.Year => 연(int)
RESULT.Month => 월(int)
RESULT.Day => 일(int)
RESULT.DayOfWeek => 요일(String)
RESULT.DayOfYear => 연중일수(int)
Ex)
RESULT = DateTime.Parse('2023-01-02');
$> RESULT.Year //연도 출력
=> 2023
$> RESULT.Month //월 출력
=> 1 //1~9월까지는 한자릿수로 표현
$> RESULT.Day //일 출력
=> 2 //1~9일까지는 한자릿수로 표현
$> RESULT.DayOfWeek //요일 출력
=> Monday
$> RESULT.DayOfYear //연중일수
=> 2
/*
해당 기능을 사용하게 될 경우, 연,월,일 등에서 int 타입으로 반환되는 기능은
몇년 뒤, 며칠 뒤 등의 값을 구할 때 Number 타입으로 변환하지 않고
바로 +,- 등을 사용하여 값을 구할 수 있습니다.
*/
$> RESULT.Day + 1 //2(일) + 1(일) = 3(일)
=> 3
4. 지정된 월의 일수 출력
DateTime.DaysInMonth(int year, int month) => int
year 연도
month 월(1부터 12까지)
Ex)
RESULT = DateTime.Parse('2023-01-02');
//과제별로 해당 월의 일수 or 마지막 날을 알아야 하는 경우 사용 가능
$> DateTime.DaysInMonth(2023, 3)
=> 31 //2023년 3월의 총일수, 말일
$> DateTime.DaysInMonth(RESULT.Year, RESULT.Month)
=> 31 //2023년 1월의 총일수, 말일
5. 기준일로부터 연,월,일 가감
DateTime.AddDays(double value) //일 => DateTime
DateTime.AddMonths(int months) //월 => DateTime
DateTime.AddYears(int value) //연 => DateTime
Ex)
RESULT = DateTime.Parse('2023-01-02');
$> RESULT.AddDays(-1).ToString('yyyy년 MM월 dd일')
=> 2023년 01월 01일
$> RESULT.AddMonths(-1).ToString('yyyy년 MM월 dd일')
=> 2022년 12월 02일
$> RESULT.AddYears(-1).ToString('yyyy년 MM월 dd일')
=> 2022년 01월 02일
6. 윤년여부 확인
윤년이란, 양력에서는 4년마다 한 번씩
2월을 29일로 하는 해를 말합니다.
DateTime.IsLeapYear(int year) => Boolean
//윤년이면 true, 아니면 false
Ex)
$> DateTime.IsLeapYear(2024)
=> true
$> DateTime.IsLeapYear(2023)
=> false
7. 문자열을 DateTime 으로 변환
DateTime.Parse(String) => DateTime
Ex)
$> DateTime.Parse('2023-04-20')
=> 2023-04-20 오전 12:00:00
$> DateTime.Parse('2023-04')
=> 2023-04-01 오전 12:00:00
문자열을 DateTime 으로
변환하여 사용하게 되면
요건에 따라 ToString 을 이용하여
자유롭게 서식에 맞추어 표현하고,
연도,월,일 등을 변수를
많이 선언하지 않고도
DateTime 함수, 속성 등을 이용하여
변수 하나로 바로바로
출력할 수 있는 장점이 있습니다.
8. ToString
기준일 : 2023-01-02 15:02:00
------------------------
yyyy 2023
yy 23
------------------------
MMMM 1월
MMM 1
MM 01
M 1월 2일
------------------------
dddd 월요일
ddd 월
dd 02
d 2
------------------------
HH 15 or 00 // 12시간 이전일 경우 두자릿수로 표현
H 15 or 0 // 12시간 이전일 경우 한자릿수로 표현
hh 03
h 3
------------------------
mm 02
m 2
------------------------
ss 00
s 0
------------------------
Ex)
RESULT = DateTime.Parse('2023-01-02');
$> RESULT.ToString('yyyy')
=> 2023
$> RESULT.ToString('yy')
=> 23
$> RESULT.ToString('MMMM')
=> 1월
$> RESULT.ToString('MMM')
=> 1 //1~9월 한자릿수 표현
$> RESULT.ToString('MM')
=> 01
$> RESULT.ToString('MM월')
=> 01월
$> RESULT.ToString('M')
=> 1월 2일
$> RESULT.ToString('d')
=> 2023-01-02
$> RESULT.ToString('dd')
=> 01
$> RESULT.ToString('ddd')
=> 일
$> RESULT.ToString('dddd')
=> 일요일
$> RESULT.ToString('yyyy-MM-dd HH:mm:ss')
=> 2023-01-02 15:02:00
$> RESULT.ToString('yyyy-MM-dd')
=> 2023-01-02 //두자릿수로 월과 일이 표현
$> RESULT.ToString('yyyy-MMM-d')
=> 2023-1-2 //한자릿수로 월과 일이 표현
$> RESULT.ToString('yyyyMMdd22')
=> 2023010222 //특정숫자를 추가하여 표현가능(영문자 사용 시, 다른 의미와 중복되는 경우 있어 사용 지양)
$> RESULT.ToString('yyyyMMdd_엑셀파일') + '.xlsx'
=> 20230102_엑셀파일.xlsx //특정문자를 추가하여 표현가능(영문자 사용 시, 다른 의미와 중복되는 경우 있어 사용 지양)
9. 날짜 대소비교
DateTime일 경우, 날짜 대소비교 가능
Ex)
RESULT = DateTime.Parse('2023-01-02');
$> RESULT > RESULT.AddDays(-1) // 2023-01-02 오전 12:00:00 > 2023-01-01 오전 12:00:00
=> true
$> RESULT.ToString('yyyy-MM-dd') > RESULT.AddDays(-1).ToString('yyyy-MM-dd') // 2023-01-02 > 2023-01-01
=> true
10. DateTime 객체 관련 기능 링크
https://learn.microsoft.com/ko-kr/dotnet/api/system.datetime?view=net-7.0
DateTime 구조체 (System)
일반적으로 날짜와 시간으로 표현된 시간의 한 순간을 나타냅니다.
learn.microsoft.com
새로운 정보나 궁금한 점은
댓글로 같이 공유해요 >_<
감사합니다 :)