lua 的 os.date os.time


lua  的 os.date  跟 shell的 date 功能一樣強大。

關於的時間的概念梳理:

  1. 格林威治時間GMT時間是我們平時使用的時間,世界各地的時間不一樣是因為時區不一樣,國內基本統一使用的北京時間,

    時區是東八區。http://www.24timemap.com/   所以世界在同一時刻的時間是不一致的。

  2. UTC時間 是 世界標准時間/原子時間,在時間上盡量接近於世界時的一種時間計量系統,這套時間基本用於互聯網時間標准中。

  3. UTC時間跟 GMT 時間是一樣的,都與英國倫敦的本地時間相同,含義也相同。

  4. 時區里的東區是比西區快,北京早上8點,意味着倫敦時間是凌晨0點,而美國那邊的時間是昨天晚上時間【這個昨天是相對於我們來說的】。

一、時間的3種格式

  先來看看日常 時間表示的 3種格式:

  1、 時間戳形式表示:time=1587115724,這個是以秒為單位的 格林威治時間GMT,不同地區的格林威治時間不一樣有時差,但是時間戳一致。

  2、用字符串表示:time="2020-11-11 22:12:32"  

  3. table形式表示:{"sec":13,"min":50,"day":18,"isdst":false,"wday":7,"yday":109,"year":2020,"month":4,"hour":15}

 

二、os.date 函數

  lua 的os.date 函數獲取:

  原型:os.date (  [format   [, time]]  )

  解釋:返回 format格式的 關於時間的 字符串或者table。

  1. 兩個參數都是可以省略的。省略兩個參數:按當前系統的設置返回格式化的字符串 ;

  2. 只省略第二個參數函數會使用當前時間作為第二個參數 ;第二個參數是數字或者字符串格式的數字

  3. 如果format以“!”開頭,則按格林尼治時間進行格式化;

  4. 如果format是一個“*t”,將返一個帶year(4位),month(1-12), day (1--31), hour (0-23), min (0-59),sec (0-61),wday (星期幾, 星期天為1)

    yday (年內天數)和isdst (是否為日光節約時間true/false)的帶鍵名的表;

   5. 如果format不是“*t”,os.date會將日期格式化為一個字符串,具體如下:

  
    6. 示例:
cjson=require "cjson"

print("省略兩個參數:",os.date())
print("省略第二個參數,會拿當前時間作為第二個參數:",os.date("%c"))
print("\n第一個參數是format格式化參數")
print("format  帶 ! :",cjson.encode(os.date("!*t")))
print("format不帶 ! :",cjson.encode(os.date("*t")))

print("\n第二個參數是時間戳")
time=os.time()
print("獲取一個當前的時間戳: ",time)
print("format  帶 ! :",cjson.encode(os.date("!*t",time)))
print("format不帶 ! :",cjson.encode(os.date("*t",time)))

print("一星期中的第幾天:",cjson.encode(os.date("%w",time)))
print("星期幾 :",cjson.encode(os.date("%a",time)))
print("星期幾 :",cjson.encode(os.date("%A",time)))

    運行結果:

     細節:注意format "!" 的用法,因為我們的時間(北京)處於東8區,所以兩次的結果會差8個小時,從結果中可以看出。

       注意使用format "*t"返回的table中wday如果是1表示星期天,而使用通用格式時%w用0表示星期天。

  

三、os.time 函數

  原型:os.time (  [table]  )

 

  解釋:如果沒有任何參數,會返回當前時間【時間戳形式】,如果參數是table,並且table的域必須有 year, month, day,

       可有也可以沒有 hour, min, sec, isdst,則會返回table所代表日期的時間,如果未定義后幾項,默認時間為當天正午(12:00:00)。

  示例:

print("不帶參數:",os.time())
print("table參數不全:",os.time({day=26,month=4,year=2020}))

print("\n跟 os.date()  結合 使用")
print(os.date("%B %A %y-%m-%d, %H:%M:%S",os.time({day=26,month=4,year=2020})))

 

  結果:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM