펄 날짜와 시간


이 장에서는 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

그리니치 표준시(GMT)

함수

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
%FYYYY-MM-DD은 다음과 같이 줄여서 %Y-%m-%d2001-08-23
%g 연도 마지막 두자리(00-99)01
%g연도2001
%h월 약어*(%b와 동일) 옵션)Aug
%H24시간 형식(00-23)14
%I12시간제(01-12)02
%j새해 첫날(001-366)235
%m월(01-12)08
%M분(00-59) 55
%n줄 바꾸기('n')
%pAM 또는 PM 표시PM
%r 시간(hh: mm : ss AM 또는 PM), 12시간 *02:55:02 pm
%R24시간HH:MM 시간 형식, %H:%M과 동일 14:55
%S초(00-61)02
%t가로 탭('t')
%T 시간(24 -시간 형식)(hh:mm:ss), %H:%M:%S14:55
%uISO와 동일 8601의 주 형식 중 월요일은 1(1-7)4
%U일년의 몇 주, 일요일이 첫날입니다(00-53)33
%VISO 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
%zISO 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");

위 예의 출력 결과는 다음과 같습니다.

아아아아