1. 程式人生 > >lua時間函式操作和對比程式碼,os.date() os.time()

lua時間函式操作和對比程式碼,os.date() os.time()

time和date兩個函式在Lua中實現所有的時鐘查詢功能。函式time在沒有引數時返回當前時鐘的數值。(在許多系統中該數值是當前距離某個特定時間的秒數。)當為函式呼叫附加一個特殊的時間表時,該函式就是返回距該表描述的時間的數值。這樣的時間表有如下的區間:

year

a full year

month

01-12

day

01-31

hour

01-31

min

00-59

sec

00-59

isdst

a boolean, true if daylight saving

前三項是必需的,如果未定義後幾項,預設時間為正午(12:00:00)。如果是在里約熱內盧(格林威治向西三個時區)的一臺Unix計算機上(相對時間為1970年1月1日,00:00:00)執行如下程式碼,其結果將如下。

– obs: 10800 = 3*60*60 (3 hours)

print(os.time{year=1970, month=1, day=1, hour=0})

    –> 10800

print(os.time{year=1970, month=1, day=1, hour=0, sec=1})

    –> 10801

print(os.time{year=1970, month=1, day=1})

    –> 54000   (obs: 54000 = 10800 + 12*60*60)

os.time()                <== 返回當前系統的日曆時間
os.date()                <== 返回本地化的時間字串,這裡是”11/28/08 17:23:37″
os.date(“%x”, os.time()) <== 返回自定義格式化時間字串(完整的格式化引數),這裡是”11/28/08″
os.clock()               <== 返回執行該程式CPU花去的時鐘秒數,這裡是1156.726

函式data,不管它的名字是什麼,其實是time函式的一種“反函式”。它將一個表示日期和時間的數值,轉換成更高階的表現形式。其第一個引數是一個格式化字串,描述了要返回的時間形式。第二個引數就是時間的數字表示,預設為當前的時間。使用格式字元 “*t”,建立一個時間表。例如下面這段程式碼:

temp = os.date(“*t”, 906000490)

則會產生表

{year = 1998, month = 9, day = 16, yday = 259, wday = 4,

 hour = 23, min = 48, sec = 10, isdst = false}

不難發現該表中除了使用到了在上述時間表中的區域以外,這個表還提供了星期(wday,星期天為1)和一年中的第幾天(yday,一月一日為1)除了使用 “*t” 格式字串外,如果使用帶標記(見下表)的特殊字串,os.data函式會將相應的標記位以時間資訊進行填充,得到一個包含時間的字串。(這些特殊標記都是以 “%” 和一個字母的形式出現)如下:

print(os.date(“today is %A, in %B”))

    –> today is Tuesday, in May

print(os.date(“%x”, 906000490))

    –> 09/16/1998

這些時間輸出的字串表示是經過本地化的。所以如果是在巴西(葡萄牙語系),”%B” 得到的就是 “setembro”(譯者按:大概是葡萄牙語九月?),”%x” 得到的就是 “16/09/98″(月日次序不同)。標記的意義和顯示例項總結如下表。例項的時間是在1998年九月16日,星期三,23:48:10。返回值為數字形式的還列出了它們的範圍。(都是按照英語系的顯示描述的,也比較簡單,就不煩了)

%a

abbreviated weekday name (e.g., Wed)

%A

full weekday name (e.g., Wednesday)

%b

abbreviated month name (e.g., Sep)

%B

full month name (e.g., September)

%c

date and time (e.g., 09/16/98 23:48:10)

%d

day of the month (16) [01-31]

%H

hour, using a 24-hour clock (23) [00-23]

%I

hour, using a 12-hour clock (11) [01-12]

%M

minute (48) [00-59]

%m

month (09) [01-12]

%p

either “am” or “pm” (pm)

%S

second (10) [00-61]

%w

weekday (3) [0-6 = Sunday-Saturday]

%x

date (e.g., 09/16/98)

%X

time (e.g., 23:48:10)

%Y

full year (1998)

%y

two-digit year (98) [00-99]

%%

the character ‘%’

事實上如果不使用任何引數就呼叫date,就是以%c的形式輸出。這樣就是得到經過格式化的完整時間資訊。還要注意%x、%X和%c由所在地區和計算機系統的改變會發生變化。如果該字串要確定下來(例如確定為mm/dd/yyyy),可以使用明確的字串格式方式(例如”%m/%d/%Y”)。

函式os.clock返回執行該程式CPU花去的時鐘秒數。該函式常用來測試一段程式碼。

local x = os.clock()

local s = 0

for i=1,100000 do s = s + i end

print(string.format(“elapsed time: %.2f\n”, os.clock() – x))

[plain] view plain copy  print?在CODE上檢視程式碼片派生到我的程式碼片
  1. function Split(szFullString, szSeparator)  
  2. local nFindStartIndex = 1  
  3. local nSplitIndex = 1  
  4. local nSplitArray = {}  
  5. while true do  
  6.    local nFindLastIndex = string.find(szFullString, szSeparator, nFindStartIndex)  
  7.    if not nFindLastIndex then  
  8.     nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, string.len(szFullString))  
  9.     break  
  10.    end  
  11.    nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, nFindLastIndex - 1)  
  12.    nFindStartIndex = nFindLastIndex + string.len(szSeparator)  
  13.    nSplitIndex = nSplitIndex + 1  
  14. end  
  15. return nSplitArray  
  16. local begin_list = Split(tips.szBegin_time," ");  
  17.         local begin_date_str = string.format("%s",begin_list[1]);  
  18.         local begin_time_str = string.format("%s",begin_list[2]);  
  19.         local begin_data_list = Split(begin_date_str,"/");  
  20.         local being_time_list = Split(begin_time_str,":");  
  21.         local t1={  
  22.             year = begin_data_list[3],  
  23.             month = begin_data_list[1],  
  24.             day = begin_data_list[2],  
  25.             hour = being_time_list[1],  
  26.             min = being_time_list[2],  
  27.             sec = being_time_list[3],  
  28.         };  
  29.         begindate = os.time(t1);  
  30.         -- entime 轉換  
  31.         local end_list = Split(tips.szEnd_time," ");  
  32.         local end_date_str = string.format("%s",end_list[1]);  
  33.         local end_time_str = string.format("%s",end_list[2]);  
  34.         local end_data_list = Split(end_date_str,"/");  
  35.         local end_time_list = Split(end_time_str,":");  
  36.         local t2={  
  37.             year = end_data_list[3],  
  38.             month = end_data_list[1],  
  39.             day = end_data_list[2],  
  40.             hour = end_time_list[1],  
  41.             min = end_time_list[2],  
  42.             sec = end_time_list[3],  
  43.         };  
  44.         enddate = os.time(t2);  
  45.         --current string 轉換  
  46.         local cur_list = Split(currenttime," ");  
  47.         local cur_date_str = string.format("%s",cur_list[1]);  
  48.         local cur_time_str = string.format("%s",cur_list[2]);  
  49.         local cur_data_list = Split(cur_date_str,"/");  
  50.         local cur_time_list = Split(cur_time_str,":");  
  51.         local t3={  
  52.             year = cur_data_list[3]+2000,  
  53.             month = cur_data_list[1],  
  54.             day = cur_data_list[2],  
  55.             hour = cur_time_list[1],  
  56.             min = cur_time_list[2],  
  57.             sec = cur_time_list[3],  
  58.         };  
  59.         curdate = os.time(t3);  
  60.     --  local begin_time = os.date(tips.szBegin_time);  
  61.     --  local end_time = os.date(tips.szEnd_time);  
  62.         if curdate > begindate and curdate < enddate then  
  63.             return true  
  64.         else  
  65.             return false;  
  66.         end;  

上述程式碼中tips.szEnd_time 和tips.szBegin_time 是兩個時間字串,格式為 “04/23/2015 17:43:12″ 

注意在設定t3 table的是,year加了2000,因為date返回的時間格式是 “04/23/15 17:43:12” ,如果不加2000,t3就會為nil

相關推薦

lua時間函式操作對比程式碼os.date() os.time()

time和date兩個函式在Lua中實現所有的時鐘查詢功能。函式time在沒有引數時返回當前時鐘的數值。(在許多系統中該數值是當前距離某個特定時間的秒數。)當為函式呼叫附加一個特殊的時間表時,該函式就是返回距該表描述的時間的數值。這樣的時間表有如下的區間: year a full year

lua 時間函式os.time()os.date()

Lua標準庫中提供了關於時間函式 os.time()和os.date(),這兩個函式需要注意的地方就是加入了時區的概念 os.time() 得到是當前時間的距離1970.1.1.08:00時間的秒數,如果傳入的引數小於這個時間,那麼就會得到一個,秒數就是負數,會得到一個空

python優雅操作11行程式碼竟然發現了室友U盤裡藏著這些……

那個猥瑣的傢伙整天把個U盤藏著當寶,到睡覺了就拿出來插到電腦上。 我決定想個辦法看他U盤裡都藏了什麼,直接去搶U盤是不可能的,騙也是不可能的。那不是丟我Python程式設計師的臉? 我必須在電腦上智取,而且不能被他發現。   當一個usb插入時,在後臺自動把usb裡的

php獲取前一天後一天,php時間函式操作

<?php date_default_timezone_set('PRC'); //預設時區 echo "今天:",date("Y-m-d",time()),"<br>"; echo "今天:",date("Y-m-d",strtotime("18 june 2008"

使用用 Angular CLI 來建立Angular2專案、應用程式碼以及檔案說明

1、要安裝CLI命令必須首先安裝Nodejs和npm包,npm包在裝好nodejs後自帶的。 2、首先建立一個目錄,用來建立Angular專案,如下圖所示: 3、開啟dos視窗,然後進入到此目錄中,如下圖所示: 4、安裝 Angular CLI,使用:npm instal

udp客戶端伺服器程式碼支援ipv6。

getaddrinfo這個函式隱藏了ipv4和ipv6的具體細節,強烈推薦使用。設定hints.ai_family = AF_UNSPEC後,getaddrinfo可以根據ip地址自動判斷是ipv4還是ipv6。當然也可以使用hints.ai_family = AF_INE

mysql函式的建立以及hibernate呼叫mysql自定義函式以及資料對比功能模仿中關村線上

系統業務有這樣一個需求,每次版本進行變更時間,則需要建立新的記錄,而不是在原來的基礎上更替舊版本。 基於這樣一個小小的需求,所有在資料庫的設計時間,進行了表的自連線,當然這個只是假象的自連線,沒有進行表自身的外來鍵的對映;當有了很多的資料之後,需要加這個外來鍵已經提示無法進

《Linux作業系統分析》之使用庫函式APIC程式碼中嵌入彙編程式碼兩種方式使用同一個系統呼叫

本篇文章分析的是使用庫函式API和C程式碼中嵌入彙編程式碼兩種方式使用同一個系統呼叫,來說明在Linux系統中,系統呼叫的實現機制。 相關知識 首先關於這篇文章會介紹一些用到的知識。 一、什麼是核心態,什麼又是使用者態。 核心態:在高執行級別下,程式碼可以執行特權指令,

python中以鍵值對形式存放的容器-----------------字典(內有相關操作示例程式碼

#Filename:dictionary.py #字典類似於你通過聯絡人的名字查詢詳細的資訊,也就是以 #鍵值對的形式儲存,一個鍵對應一個值 #格式:key1:value1,key2:value2 #示例程式碼: #首先建立一個字典,以鍵值對的形式存在 dic={'1':'

web項目長時間操作,退出登錄跳轉到登錄頁面

銷毀 doc 移動 java ssi scrip cat over window <script type="text/javascript"> var lastTime = new Date().getTime();var currentT

PYTHON自動化Day6-函式多個返回值匿名函式、列表生成式三元運算子os模組sys模組時間模組字典排序資料庫操作加密(md5)

一.函式多個返回值和匿名函式 #函式返回多個值,用一個變數接收 def say(): num1=1 num2=2 num3=3 return num1,num2,num3 res=say() print(res) #打印出來是元組。 函式如果返回多個值的話,會把返回的

演算法 -- 猴子選大王的四種方法並對其時間與記憶體消耗的分析對比&PHP

本篇利用PHP對“猴子選大王”問題,給出了四種方法,並對其進行了時間消耗的分析與對比。 題目:n個猴子要選出一個大王,隨機給出一個數m,當猴子報數為m的時候,則被淘汰,剩餘的最後一個猴子即為大王。  一、演算法解釋及程式碼展示 方法一:圍圈報數 n 個猴子圍成一圈從 1

JavaScript操作BOM物件 - document物件; history location物件 對話方塊Date時間物件

getElementById返回擁有指定id的第一個物件(注意只是一個且是第一個)getElementsByName返回帶有指定名稱的物件集合getElementsBytagNam返回指定標籤的物件集合例html程式碼<div class="content" > <div cl

關於ThinkPHP5.0*的軟刪除delete_time的引用部分時間函式where(),whereTime()連貫操作的問題

關於ThinkPHP5.0*的軟刪除和部分時間函式連貫操作的問題 1、使用軟刪除,可實現邏輯刪除,有利於保護資料 使用軟刪除: 需要在model檔案中 引入 use trait\SoftDelete; 程式碼如下: <?php namespace

給出n個學生的考試成績表每條記錄由學號、姓名分數名次組成設計演算法完成下列操作: (1)設計一個顯示對學生資訊操作的選單函式如下所示: *************************

給出n個學生的考試成績表,每條記錄由學號、姓名和分數和名次組成,設計演算法完成下列操作: (1)設計一個顯示對學生資訊操作的選單函式如下所示: *************************        1、錄

VC 遍歷資料夾所有檔名程式碼簡短。下面函式是獲取YY賬號(對xml的解析操作

#include <filesystem> #include <string> #include <vector> #include "tinyxml.h" using namespace std; using namespace std:

C++模板的實現(模板函式模板類附帶模板實現順序表連結串列程式碼

模板  當我們實現一個交換函式時,我們可以寫成如下。 void Swap(int& x, int& y) { int tmp = x; x = y; y = tmp; }  這裡只能交換兩個整數,當我們

近日有需要寫點C#程式有用到Dataset資料集SQLite資料庫由於我從來就不擅長記各種程式語言的語法所以在查閱一堆資料後留下以下內容備忘: 一、SQLite操作直接貼程式碼很簡單

近日有需要寫點C#程式,有用到Dataset資料集和SQLite資料庫,由於我從來就不擅長記各種程式語言的語法,所以在查閱一堆資料後,留下以下內容備忘:   一、SQLite操作,直接貼程式碼,很簡單:       //建立一個數據庫檔案     string  d

Lua中日期時間函式詳解

最近在做Lua指令碼的時候,用到了Lua的日期和時間函式,發現其功能強大,學習一下!在Lua中,函式time和data提供了所有的日期和時間的功能,下面將這兩個函式分開學習。 time函式: 如果不帶任何引數呼叫time,它會返回一個數字,表示當前的日期和時間,改數字為

JAVA之類建構函式構造程式碼

類:         在我們的日常生活中,對於事物的描述無非就是描述事物的屬性和行為。如:人的身高,體重,年齡等稱為屬性,人會說話,會跑步,會做飯等等稱為行為。         而對於Java中的類,無非也是如此,包含了屬性和行為。 類的定義: 屬性:對應類中的成員變數行