如何用Perl表示當前時間

藏色散人
發布: 2019-02-15 10:59:05
原創
3289 人瀏覽過

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教學//m.sbmmt.com/course/list/39.html

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

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

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!