首頁  >  文章  >  後端開發  >  如何用Perl表示當前時間

如何用Perl表示當前時間

藏色散人
藏色散人原創
2019-02-15 10:59:053343瀏覽

Perl有一個方便的內建函數,用於在腳本中尋找當前日期和時間。但是,當我們談論找時間時,我們討論的是目前在運行腳本的機器上設定的時間。例如,如果您在本機電腦上執行Perl腳本,則localtime將傳回您設定的目前時間,並且可能設定為您目前的時區。

如何用Perl表示當前時間

在網路伺服器上執行相同的腳本時,您可能會發現桌面系統上的本機時間已關閉本機時間。伺服器可能位於不同的時區,或設定不正確。每台機器可能對本地時間有一個完全不同的想法,它可能需要在腳本內或伺服器本身上進行一些調整,以使其與您期望的相匹配。

localtime函數傳回一個包含當前時間資料的列表,其中一些資料需要進行調整。運行下面的程序,您將看到列表中的每個元素都印在行上並用空格分隔。

#!/usr/local/bin/perl
@timeData = localtime(time);
print join(' ', @timeData);

你應該會看到類似的東西,雖然數字可能會大不相同。

20 36 8 27 11 105 2 360 0

目前時間的這些元素依序排列:

-過了一分鐘

-過了幾分鐘

-午夜時分

-每個月的某一天

-從年初開始的幾個月

-自1900年以來的年數

-自本週開始以來的天數(星期日)

-自年初以來的天數

-夏時制是否有效

使Perl本地時間可讀

localtime返回的數組中的一些元素讀起來有點彆扭。誰會用1900年以後的年份來考慮這一年呢?讓我們來看一個例子,讓我們的日期和時間更清楚。

當你執行這個程式時,你會看到一個更容易閱讀的日期和時間,像這樣:

 9:14:42, Wed Dec 28, 2018

那麼我們做了什麼來創建這個可讀性更好的版本呢?首先,我們準備兩個數組,其中包含月份和星期的名稱。

@months = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
@weekDays = qw(Sun Mon Tue Wed Thu Fri Sat Sun);

由於localtime函數以0-11和0-6之間的值傳回這些元素,因此它們是陣列的最佳候選元素。 localtime傳回的值可以作為數字位址來存取陣列中的正確元素。

$months[$month] $weekDays[$dayOfWeek]

下一步是從localtime函數取得所有的值。在本例中,我們使用Perl捷徑自動將localtime陣列中的每個元素放到它自己的變數中。我們選擇名稱是為了方便記住哪個元素是哪個元素。

($second, $minute, $hour, $dayOfMonth, $month, $yearOffset, $dayOfWeek, $dayOfYear, $daylightSavings) = localtime();

我們還需要調整這一年的價值。記住,localtime返回自1900年以來的年數,因此為了找到當前的年份,我們需要在給定的值上加上1900。

$year = 1900 + $yearOffset;

如何用Perl表示當前通用時間

假設您希望避免所有可能的時區混淆,並控制自己的時差。取得localtime中的當前時間將始終傳回一個基於機器的時區設定的值——美國的伺服器將返回一個時間,而澳洲的伺服器將返回一個由於時區差異而幾乎全天不同的時間。

Perl還有第二個方便的時間指示函數,它的工作方式與localtime完全相同,但是它返回的不是機器所在時區的固定時間,而是協調世界時(UTC,也稱為格林尼治標準時間或GMT)。很簡單,這個函數被稱為gmtime

 #!/usr/local/bin/perl
@timeData = gmtime(time);
print join(' ', @timeData);

除了在每台機器上和GMT中返回的時間相同之外,gmtime和localtime函數之間沒有區別。所有數據和轉換都以相同的方式完成。

#!/usr/local/bin/perl
@months = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
@weekDays = qw(Sun Mon Tue Wed Thu Fri Sat Sun);
($second, $minute, $hour, $dayOfMonth, $month, $yearOffset, $dayOfWeek, $dayOfYear, $daylightSavings) = gmtime();
$year = 1900 + $yearOffset;
$theGMTime = "$hour:$minute:$second, $weekDays[$dayOfWeek] $months[$month] $dayOfMonth, $year";
print $theGMTime;

1.localtime將傳回執行腳本的機器上的目前本機時間。

2.gmtime將返回通用格林尼治標準時間,或GMT(或UTC)。

3.傳回值可能不是您所期望的,因此請確保在必要時進行轉換。

相關推薦:《Perl教學http://www.php.cn/course/list/39.html

本篇文章是關於如何用Perl表示當前時間的方法介紹,希望對需要的朋友有所幫助!

以上是如何用Perl表示當前時間的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn