Perl有一個方便的內建函數,用於在腳本中尋找當前日期和時間。但是,當我們談論找時間時,我們討論的是目前在運行腳本的機器上設定的時間。例如,如果您在本機電腦上執行Perl腳本,則localtime將傳回您設定的目前時間,並且可能設定為您目前的時區。
在網路伺服器上執行相同的腳本時,您可能會發現桌面系統上的本機時間已關閉本機時間。伺服器可能位於不同的時區,或設定不正確。每台機器可能對本地時間有一個完全不同的想法,它可能需要在腳本內或伺服器本身上進行一些調整,以使其與您期望的相匹配。
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中文網其他相關文章!