创建和显示时间

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. ubuntu14.04如何卸载mysql

    1. 删除mysql的数据文件 sudo rm /var/lib/mysql/ -R 2. 删除mqsql的配置文件 sudo rm /etc/mysql/ -R 3. 自动卸载mysql的程序 su ...

  2. [Python爬虫] 之六:Selenium 常用控件用法

    Selenium 常用控件用法 1.文本框 上图中,如何定位搜索文本框,并输入搜索内容进行搜索 首先:利用方法 find_element_by_xpath定位元素:inputElements = se ...

  3. 更改DNS轻松访问google.com,FaceBook,Youtube等

    将默认的Dns更改为42.120.21.30即可打开 https://www.google.com/ https://www.facebook.com/ https://www.youtube.com ...

  4. (剑指Offer)面试题56:链表中环的入口结点

    题目: 一个链表中包含环,请找出该链表的环的入口结点. 思路: 1.哈希表 遍历整个链表,并将链表结点存入哈希表中(这里我们使用容器set),如果遍历到某个链表结点已经在set中,那么该点即为环的入口 ...

  5. 华为E392-u92在 linux 2.6.34 内核环境下支持

    还是先说说思路吧.网关需要支持4G LTE网卡.如之前的操作,插上网卡后,usb-modeswitch 后没有产生对应的/dev/ttyUSB0-2. 所以ppp拨号脚本等无法工作.这里在ubuntu ...

  6. JAVA设计模式之 訪问者模式【Visitor Pattern】

    一.概述 訪问者模式是一种较为复杂的行为型设计模式,它包括訪问者和被訪问元素两个主要组成部分.这些被訪问的元素通常具有不同的类型,且不同的訪问者能够对它们进行不同的訪问操作.在使用訪问者模式时,被訪问 ...

  7. python 利用 setup.py 手动安装第三方类库

    python 利用 setup.py 手动安装第三方类库 由于我在mac使用时,装了python3,默认有python2的环境,使用 pip 安装第三方类库时,老是安装到 python2的环境上: 在 ...

  8. Edit Control响应全选(Ctrl+A)

    MFC中的Edit控件用于输入数据,当输入的数据为大段数字的时候,全选功能就显得非常重要了,可偏偏在MFC中Edit控件就不 支持全选.Ctrl+A不行,双击也不行. Ctrl+C和Ctrl+V都是默 ...

  9. Asp.Net MVC4开发二: Entity Framework在Asp.Net MVC4中的应用

    ORM作为一种数据库訪问机制已广泛地应用于各种项目其中,在.Net开发中,应用比較广泛的ORM框架大致有以下几个: 官方支持的有:Linq to SQL.Entity Framework.三方的有:N ...

  10. Python方法完成农历日历功能代码

    来自 #coding=utf-8 #****************************************************************************** # 下 ...