Latest web development tutorials

Perlの日付時刻

このセクションでは、我々は処理の日付と時刻のためのPerl言語を紹介します。

Perlは以下の通り処理時間の関数であります:

  • 1、時間()関数:1970年1月1日の秒の累積数から復帰します
  • 2、関数localtime():ローカルタイムゾーンを取得します。
  • 3、関数localtime():GMTを取得

現在の日付と時刻

パラメータなしで現在の日付と時刻を返す関数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時間のGMT時間差から見ることができます。


形式の日付と時刻

我々は、開発に必要な時間の出力形式に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

新時代の時間(エポックタイム)

私たちは、この関数は1月1日、秒の1970累積数から返し、時間の新しい時代を得るために、時間()関数を使用することができます。 例としては、次のとおりです:

#!/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 週の略語(Sun..Sat)* Thu
%A 週フルネーム(Sunday..Saturday)* Thursday
%b 月の省略形(Jan..Dec)* Aug
%B 月の完全な名前(January..December)* 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 年の最後の2桁( 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形式、月曜日は11-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 、2桁( 00-99 01
%Y 2001
%z UTCからのオフセットISO 8601のタイムゾーン(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");

上記の出力の実装の例としては、次のとおりです。

时间日期 - 2016-06-12 12:15:13
时间日期 - 2016-06-12 04:15:13