您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關用Perl表示當前時間的方法,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
Perl有一個方便的內置函數,用于在腳本中查找當前日期和時間。但是,當我們談論找時間時,我們討論的是當前在運行腳本的機器上設置的時間。例如,如果您在本地計算機上運行Perl腳本,則localtime將返回您設置的當前時間,并且可能設置為您當前的時區。
在Web服務器上運行相同的腳本時,您可能會發現桌面系統上的本地時間已關閉本地時間。服務器可能位于不同的時區,或者設置不正確。每臺機器可能對本地時間有一個完全不同的想法,它可能需要在腳本內或服務器本身上進行一些調整,以使其與您期望的相匹配。
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表示當前時間的方法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。