펄 날짜와 시간
이 장에서는 Perl 언어로 시간과 날짜를 처리하는 방법을 소개합니다.
Perl에서 시간을 처리하는 함수는 다음과 같습니다.
1. time() 함수: 1970년 1월 1일의 날짜를 반환합니다. 이후 누적된 초 수, gmtime() 함수:
그리니치 표준시 가져오기현재 시간 및 날짜
다음으로 <🎜를 살펴보겠습니다. >localtime( )- 함수는 매개변수 없이 현재 시간과 날짜를 반환합니다.
다음 9개 기호는 다양한 시간 및 날짜 매개변수를 나타냅니다.
sec, # 秒, 0 到 61 min, # 分钟, 0 到 59 hour, # 小时, 0 到 24 mday, # 天, 1 到 31 mon, # 月, 0 到 11 year, # 年,从 1900 开始 wday, # 星期几,0-6,0表示周日 yday, # 一年中的第几天,0-364,365 isdst # 如果夏令时有效,则为真
예제는 다음과 같습니다.
#!/usr/bin/perl @months = qw( 一月 二月 三月 四月 五月 六月 七月 八月 九月 十月 十一月 十二月 ); @days = qw(星期天 星期一 星期二 星期三 星期四 星期五 星期六); ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(); print "$mday $months[$mon] $days[$wday]\n";위 예제 실행의 출력 결과는 다음과 같습니다.
12 六月 星期天
현재 시스템 시간대 설정의 시간을 반환하는 localtime()을 직접 호출하는 경우 예시는 다음과 같습니다.
#!/usr/bin/perl $datestring = localtime(); print "时间日期为:$datestring\n";
위 예시를 실행한 결과는 다음과 같습니다. 时间日期为:Sun Jun 12 11:27:31 2016
gmtime()
localtime()과 유사하지만 표준 그리니치 표준시를 반환합니다.#!/usr/bin/perl $local_datestring = localtime(); print "本地时间日期为:$local_datestring\n"; $gmt_datestring = gmtime(); print "GMT 时间日期为:$gmt_datestring\n";위 예제 실행의 출력 결과는 다음과 같습니다.
本地时间日期为:Sun Jun 12 11:32:14 2016 GMT 时间日期为:Sun Jun 12 03:32:14 2016예제에서 중국의 시간은 그리니치 표준시와 8시간 다르다는 것을 알 수 있습니다.
날짜 및 시간 형식localtime() 함수의 9개 시간 요소를 사용하여 공식화해야 하는 형식화된 시간을 출력할 수 있습니다. 형식화된 출력은 printf() 함수를 사용합니다:
#!/usr/bin/perl ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(); printf("格式化时间:HH:MM:SS\n"); printf("%02d:%02d:%02d", $hour, $min, $sec);위 예제의 출력 결과는 다음과 같습니다:
格式化时间:HH:MM:SS 11:35:23
Epoch Time
time( ) 함수를 사용할 수 있습니다. 1970년 1월 1일 이후의 초 수를 반환하는 에포크 시간을 구합니다. 예시는 다음과 같습니다.
#!/usr/bin/perl $epoc = time(); print "从1970年1月1日起累计的秒数为:$epoc\n";
위 예시의 실행 출력 결과는 다음과 같습니다.
从1970年1月1日起累计的秒数为:1465702883
원하는 시간 형식으로 출력할 수 있습니다.#!/usr/bin/perl ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(); print "当期时间和日期:"; printf("%d-%d-%d %d:%d:%d",$year+1990,$mon+1,$mday,$hour,$min,$sec); print "\n"; $epoc = time(); $epoc = $epoc - 24 * 60 * 60; # 一天前的时间秒数 ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($epoc); print "昨天时间和日期:"; printf("%d-%d-%d %d:%d:%d",$year+1990,$mon+1,$mday,$hour,$min,$sec); print "\n";실행 출력 결과 위의 예는 다음과 같습니다.
当期时间和日期:2106-6-12 11:49:28 昨天时间和日期:2106-6-11 11:49:28
POSIX 함수 strftime()strftime() 함수는 시간을 원하는 형식으로 지정할 수 있습니다. 다음 표에는 일부 서식 기호가 나열되어 있습니다. * 기호는 현지 시간을 사용함을 나타냅니다.
기호 | 설명 | 인스턴스 |
---|---|---|
%a | 요일 the week (Sun..Sat)의 약어 * | Thu |
%A | 요일의 전체 이름 주(일요일..토요일) * | Thursday |
%b | 월 약어(1월..12월) * | Aug |
%B | 월 이름(1월..12월) * | August |
%c | 날짜 및 시간* | Thu Aug 23 14:55:02 2001 |
%C | 연도를 100으로 나누어 반올림(00-99 ) | 20 |
%d | 일(01-31 ) | 23 |
%D | 날짜, MM/DD/YY 은 %m/%d/%y 과 같습니다. | 08/23/01 |
%e | 일은 공백을 사용하여 한 자리 숫자( 1-31 )를 입력합니다 | 23 |
%F | YYYY-MM-DD 은 다음과 같이 줄여서 %Y-%m-%d | 2001-08-23 |
%g | 연도 마지막 두자리(00-99 ) | 01 |
%g | 연도 | 2001 |
%h | 월 약어*(%b 와 동일) 옵션) | Aug |
%H | 24시간 형식(00-23 ) | 14 |
%I | 12시간제(01-12 ) | 02 |
%j | 새해 첫날(001-366 ) | 235 |
%m | 월(01-12 ) | 08 |
%M | 분(00-59 ) | 55 |
%n | 줄 바꾸기('n' ) | |
%p | AM 또는 PM 표시 | PM |
%r | 시간(hh: mm : ss AM 또는 PM), 12시간 * | 02:55:02 pm |
%R | 24시간HH:MM 시간 형식, %H:%M | 과 동일 14:55 |
%S | 초(00-61 ) | 02 |
%t | 가로 탭('t' ) | |
%T | 시간(24 -시간 형식)(hh:mm:ss), %H:%M:%S | 14:55 |
%u | ISO와 동일 8601의 주 형식 중 월요일은 1 (1-7 ) | 4 |
%U | 일년의 몇 주, 일요일이 첫날입니다(00-53 ) | 33 |
%V | ISO 8601 주간(00-53 ) | 34 |
%w | 요일(0은 일요일을 나타냄) (0-6 ) | 4 |
%W | 어느 요일 년도, 월요일이 첫날(00-53 ) | 34 |
%x | 표시 날짜 형식(mm/dd) /yy) * | 08/23/01 |
%X | 표시 시간 형식* | 14:55:02 |
%y | 연도, 두자리(00-99 ) | 01 |
%Y | 연도 | 2001 |
%z | ISO 8601 및 UTC 시간대 오프셋(1분=1) , 1시간=100) | +100 |
%Z | 현재의 이름 시간대(예: "중국 표준시") * | CDT |
%% | % 기호 | % |
예제는 다음과 같습니다.
#!/usr/bin/perl use POSIX qw(strftime); $datestring = strftime "%Y-%m-%d %H:%M:%S", localtime; printf("时间日期 - $datestring\n"); # GMT 格式化时间日期 $datestring = strftime "%Y-%m-%d %H:%M:%S", gmtime; printf("时间日期 - $datestring\n");
위 예의 출력 결과는 다음과 같습니다.
아아아아