创建和显示时间

Date类提过了简洁的使用date和time的方法。它依赖于os.date和os.time。
Date对象可以通过table创建,如果os.date,同时提过了获取和设置date
成员变量的元方法。
> d = Date {year = 2011, month = 3, day = 2 }
> = d
2011-03-02 12:00:00
> = d:month(),d:year(),d:day()
 3    2011    2
> d:month(4)
> = d
2011-04-02 12:00:00
> d:add {day=1}
> = d
2011-04-03 12:00:00
 
add函数可以把具有相同date域的表相加。
> = d:weekday_name()
Sun
> = d:last_day()
2011-04-30 12:00:00
> = d:month_name(true)
April
 
Date提供了默认的文本转date对象的方法,不过使用Date.Format你可以更加自由
的控制格式和解释及显示。
> iso = Date.Format 'yyyy-mm-dd'
> d = iso:parse '2010-04-10'
> amer = Date.Format 'mm/dd/yyyy'
> = amer:tostring(d)
04/10/2010
 
从0.9.7版开始,Date的构造函数更加自由。你可以省略year'、‘month’或‘day'的
任意部分。
> = Date { year = 2008 }
2008-01-01 12:00:00
> = Date { month = 3 }
2011-03-01 12:00:00
> = Date { day = 20 }
2011-10-20 12:00:00
> = Date { hour = 14, min = 30 }
2011-10-13 14:30:00
 
省略'year'则默认使用当前年,'month'也是如此。如果想设置date里的属性,可以使用‘setter’
方法,setter会返回date对象,这样你可以链式调用。
> d = Date { day = 03 }
> = d:hour(18):min(30)
2011-10-03 18:30:00
 
最后,Date允许位置参数:
> = Date(2011,10,3)
2011-10-03 12:00:00
> = Date(2011,10,3,18,30,23)
2011-10-03 18:30:23
 
Date.Format已经扩展了,你不需要模式就可以创建它的实例,它会尝试用内置的几套规则。
这对用户来说很有用,他们输入一般都不规则。
> df = Date.Format()
> = df:parse '5.30pm'
2011-10-13 17:30:00
> = df:parse '1730'
 nil     day out of range: 1730 is not between 1 and 31
> = df:parse '17.30'
2011-10-13 17:30:00
> = df:parse 'mar'
2011-03-01 12:00:00
> = df:parse '3 March'
2011-03-03 12:00:00
> = df:parse '15 March'
 2011-03-15 12:00:00
> = df:parse '15 March 2008'
2008-03-15 12:00:00
> = df:parse '15 March 2008 1.30pm'
2008-03-15 13:30:00
> = df:parse '2008-10-03 15:30:23'
2008-10-03 15:30:23
 
处理不同国家的日期时,格式化为ISO格式的日期是个好想法。
 > = df:parse '24/02/12'
2012-02-24 12:00:00
 
但这不是美国人期望的,你可以让它的输出期望的格式,而且是跨平台的。
> df:US_order(true)
> = df:parse '9/11/01'
2001-11-09 12:00:00
 
 
 

lua工具库penlight--05日期和时间的更多相关文章

  1. lua工具库penlight--01简介

    lua的设计目标是嵌入式语言,所以和其它动态语言(如python.ruby)相比其自带的库缺少很多实用功能. 好在有lua社区有Penlight,为lua提供了许多强大的功能,接下来的几篇博客,我会简 ...

  2. lua工具库penlight--06数据(一)

    这篇太长了,分了两部分.(这个是机器翻译之后我又校对了一下,以后的都这样,人工翻译太累了.) 读数据文件 首先考虑清楚,你的确需要一个自定义的文件读入器吗?如果是,你能确定有能力写好吗? 正确,稳健, ...

  3. lua工具库penlight--08额外的库(一)

    额外的库 在这一节中的库不再被认为是Penlight的核心部分,但在需要时,仍提供专门的功能. 简单的输入的模式 Lua 的字符串模式匹配是非常强大,通常您将不需要传统的正则表达式库.即便如此,有时  ...

  4. lua工具库penlight--06数据(二)

    词法扫描 虽然 Lua 的字符串模式匹配是非常强大,但需要更强大的东西.pl.lexer.scan可以提供标记字符串,按标记机分类数字.字符串等. > lua -lpl Lua 5.1.4  C ...

  5. lua工具库penlight--09技术选择

    模块化和粒度 在理想的世界,一个程序应该只加载它需要的库.Penlight需要额外100 Kb 的字节码来工作.它是简单但却乏味要加载你需要什么: local data = require 'pl.d ...

  6. lua工具库penlight--07函数编程(二)

    列表压缩 列表压缩是以紧凑的方式通过指定的元素创建表.在 Python里,你可以说: ls = [x for x in range(5)]  # == [0,1,2,3,4] 在 Lua,使用pl.c ...

  7. lua工具库penlight--04路径和目录

    使用路径 程序不应该依赖于奇葩的系统,这样你的代码会难以阅读和移植.最糟糕的是硬编码的路径, windows和Unix的路径分隔符正好相反.最好使用path.join,它可以帮助你解决这个问题. pl ...

  8. lua工具库penlight--02表和数组

    类Python的List lua的优美之处在于把数组和关联数组都用table实现了(Python中叫list和dict,C++中叫vector和map). 一般我们把数字索引的table叫做list. ...

  9. lua工具库penlight--07函数编程(一)

    函数编程 序列 Lua 迭代器 (最简单的形式) 是一个函数,可以多次调用返回一个或多个值.for in语句理解迭代器和循环,直到该函数将返回nil. Lua有标准的序列迭代器 (ipairs和pai ...

随机推荐

  1. sql server 批量导出存储过程

    sys.syscomments:包含数据库中每个视图.规则.默认值.触发器.CHECK 约束.DEFAULT 约束和存储过程的项.text 列包含原始的 SQL 定义语句.(简单点说,这个系统表存储了 ...

  2. [Algorithm] Reverse array of Chars by word

    For example we have: ["p", "r", "e", "f", "e", &qu ...

  3. 一些C++11语言新特性 - Uniform Initialization

    1. Uniform Initialization , , }; std::vector<, , , , , , }; std::vector<std::string> cities ...

  4. 用pdb调试OpenStack Havana

    作为个人学习笔记分享,有任何问题欢迎交流! Note:若是想要用pdb调试OpenStack,必须通过Devstack安装它. Devstack安装Havana过程 1.   使用一般用户(非root ...

  5. Android Studio优秀插件汇总

  6. JUnit 3.8 演示递归删除文件目录的 测试类程序 .

    用递归方式来实现删除硬盘的文件或目录(空文件夹) 首先要找到递归的入口及出口,这点很重要,成败在此,呵呵! 代码实现: import java.io.File ; class RecursionDel ...

  7. js 不固定传参

      js 不固定传参 CreationTime--2018年7月2日15点18分 Author:Marydon /** * 声明一个函数 * @explain 传参个数不确定 */ function ...

  8. JVM是怎么工作的?

    了解JVM的工作机制能够更好的帮助我们理解java语言本身,规避各种可能的错误.所以,今天趁此机会好好复习一下.来看看JVM是怎么工作的. 一.啥是JVM JVM可以理解为用来运行java程序的一种运 ...

  9. 微信小程序项目实战之豆瓣天气

    概述 微信小程序项目实战之豆瓣天气 详细 代码下载:http://www.demodashi.com/demo/10943.html 一.准备工作 1.注册微信小程序 2.在小程序设置中设置reque ...

  10. [Verilog]随意整数(奇数,偶数)分频器设计, 50%占空比

    module div_clk(clk_in, divisor, clk_out); input clk_in; input divisor; output clk_out; reg clk_out = ...