[Lua基础]操作系统库——Date,Time,Clock
来源:互联网 发布:java图形界面的布局 编辑:程序博客网 时间:2024/05/09 01:18
基本概念
理论上来说,格林威治标准时间的正午是指当太阳横穿格林威治子午线时(也就是在格林威治上空最高点时)的时间。由于地球在它的椭圆轨道里的运动速度不均匀,这个时刻可能与实际的太阳时有误差,最大误差达16分钟。由于地球每天的自转是有些不规则的,而且正在缓慢减速,因此格林威治时间已经不再被作为标准时间使用。现在的标准时间,是由原子钟报时的协调世界时(UTC)。
世界标准时间(Coordinated Universal Time,UTC):又称世界协调时间,是最主要的世界时间标准,其以原子时秒长为基础,在时刻上尽量接近于格林尼治平时。国际原子时的误差为每日数纳秒,而世界时的误差为每日数毫秒。对于这种情况,一种称为协调世界时的折衷时标于1972年面世。为确保协调世界时与世界时相差不会超过0.9秒,在有需要的情况下会在协调世界时内加上正或负闰秒。因此协调世界时与国际原子时之间会出现若干整数秒的差别。位于巴黎的国际地球自转事务中央局负责决定何时加入闰秒。
国际原子时(TAI):定义一秒为铯-133原子基态两个超精细能级间跃迁辐射9,192,631,770周所持续的时间。
时区:时区是地球上的区域使用同一个时间定义。以前,人们通过观察太阳的位置(时角)决定时间,这就使得不同经度的地方的时间有所不同(地方时)。1863年,首次使用时区的概念。时区通过设立一个区域的标准时间部分地解决了这个问题。世界各个国家位于地球不同位置上,因此不同国家的日出、日落时间必定有所偏差。这些偏差就是所谓的时差。如果本地时间比UTC时间快,例如中国大陆[3]、香港、澳门、台湾、蒙古国、新加坡、马来西亚、菲律宾、澳大利亚西部的时间比UTC快8小时,就会写作UTC+8,俗称东8区。相反,如果本地时间比UTC时间慢,例如夏威夷的时间比UTC时间慢10小时,就会写作UTC-10,俗称西10区。
UNIX时间:或称POSIX时间是UNIX或类UNIX系统使用的时间表示方式:从协调世界时1970年1月1日0时0分0秒起至现在的总秒数,不包括闰秒。
时钟:在计数系统中,所有的波形都与一个基本时序波型同步,称之为时钟(clock)。时钟是周期波,每两个脉冲之间的间隔等于一个位时间。
RTC:大部分PC机中有两个时钟源,他们分别叫做RTC和OS(操作系统)时钟。RTC(Real Time Clock,实时时钟)也叫做CMOS时钟,它是PC主机板上的一块芯片(或者叫做时钟电路),它靠电池供电,即使系统断电,也可以维持日期和时间。由于它独立于操作系统,所以也被称为硬件时钟,它为整个计算机提供一个计时标准,是最原始最底层的时钟数据。
Linux只用RTC来获得时间和日期;然而,通过作用于/dev/rtc设备文件,也允许进程对RTC编程。内核通过0x70和0x71 I/O端口存取RTC。通过执行/sbin/clock系统程序(它直接作用于这两个I/O端口),系统管理员可以配置时钟。
OS时钟:OS时钟产生于PC主板上的定时/计数芯片,由操作系统控制这个芯片的工作,OS时钟的基本单位就是该芯片的计数周期。在开机时操作系统取得RTC中的时间数据来初始化OS时钟,然后通过计数芯片的向下计数形成了OS时钟,所以OS时钟并不是本质意义上的时钟,它更应该被称为一个计数器。OS时钟只在开机时才有效,而且完全由操作系统控制,所以也被称为软时钟或系统时钟。
函数Date()
%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 '%'
print(os.time())-->1414320655temp = os.date("*t", 1414320655)-->{["day"] = 26,["hour"] = 18,["isdst"] = false,["min"] = 50,-->["month"] = 10,["sec"] = 55,["wday"] = 1,["yday"] = 299,["year"] = 2014}---wday的取值范围是1~7,周日为1,周六为7;与%w得出的结果对应小1.print(os.date("today is %A, in %B"))-->today is Sunday, in Octoberprint(os.date("%x", 1414320655))-->10/26/14print(os.date("%m/%d/%Y"))-->10/26/2014print(os.date("%Y-%m-%d %H:%M:%S"))-->2014-10-26 19:40:17
事实上如果不使用任何参数就调用date,就是以%c的形式输出。这样就是得到经过格式化的完整时间信息。还要注意%x、%X和%c由所在地区和计算机系统的改变会发生变化。如果该字符串要确定下来(例如确定为mm/dd/yyyy),可以使用明确的字符串格式方式(例如"%m/%d/%Y")。
函数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
print(os.time())-->1414320655print(os.time({year=2000, month=1, day=1, hour=0})) --> 946656000 --前三项是必需的,如果未定义后几项,默认时间为正午(12:00:00)print(os.time{year=1980, month=1, day=1, hour=0, sec=1}) --> 315504001print(os.time{year=1970, month=1, day=1,hour = 8,min = 0,sec=1}) --> 1 --东八区
函数Clock()
函数os.clock()返回执行该程序CPU花去的时钟秒数(单位为秒)。该函数常用来测试一段代码。
local x =os.clock()local s =0fori=1,100000 do s = s + i endprint(string.format("elapsed time: %.2f\n", os.clock() - x)) --1.052
- [Lua基础]操作系统库——Date,Time,Clock
- lua Date和Time
- lua Date和Time
- lua Date和Time
- lua Date和Time
- lua Date和Time
- Lua学习与交流——Lua os.date 和 os.time 分享
- 修改linux时间和日期——date和clock
- lua os.time() 和os.date()
- Android基础入门教程——2.3.11 Date & Time组件(上)
- Android基础入门教程——2.3.12 Date & Time组件(下)
- Python学习——Date and Time
- Android基础:Date & Time组件(上)
- Android基础:Date & Time组件(下)
- lua os.time与os.date的简单用法
- lua 时间函数os.time()和os.date()
- cocos-Lua中的os.time()与os.date()
- lua 时间函数os.time()和os.date()
- 《人工智能(智能系统指南,第二版)》读书笔记——7、第六章
- 水波纹
- 替换html里的换行
- hdu 1401 (双广)
- 去除winrar广告
- [Lua基础]操作系统库——Date,Time,Clock
- 搭建Android开发环境问题记录(win7)
- linux 读写文件
- java环境配置
- SSH中用到的设计模式之二——简单工厂
- 【软件工程】文档总结
- Ad hoc
- struts2基于注解且使用拦截器的文件上传配置
- 文法也可以通俗易懂