循环 – Lua Date Manipulation Loop

我正在尝试运行一个包含两个日期值的批处理脚本,我想调整它然后让脚本再次运行.我想引用一个lua脚本来为我调整这些日期值.我使用lua只是因为大部分项目都是用这种语言编写的.

如果我的变量是start = 01/01/2012和end = 02/01/2012,我怎么能将这两个日期提前14天?然后我想让它运行,然后再次循环并向前移动另外14天.这将继续,直到循环中断我决定的日期.是否有可能以这种方式实现这一点,还是我接近这个错误

我想我可以做一些涉及string.gsub的函数,它会从我的日期中拉出“dd”并将其向上移动14.然而,是否有可能进行这种日期算术或者当我达到这个时就会中断月底它会尝试读取像01/45/2012这样的日期吗?

解决方法

您的规格并不完全清楚.我想以下脚本可能会有所帮助.
诀窍是将日期转换为时间值,由 os.time返回,可以作为简单数字进行比较.

要做到这一点,首先必须解析日期的字符串形式,然后将它们转换为适合提供给os.time的表格形式.请注意,递增这些表的字段(表示其组件已拆分的日期)已经处理时间算术,即指定值为例如32的日期字段将在转换为时间值时正确换行到下个月.

到达目标日期后,使用os.date将时间值转换回所需格式的日期值.

local TARGET_DATE = "03/05/2012"

-- get the two dates from the command line of this lua script

local date1 = arg[1]
local date2 = arg[2]

date1 = "01/01/2012"    -- test data - remove in actual script
date2 = "02/01/2012"    -- test data - remove in actual script

-- parse the dates (assuming the format day/month/year)

local d1,m1,y1 = string.match( date1,'^(%d%d)/(%d%d)/(%d%d%d%d)$' )
local d2,m2,y2 = string.match( date2,'^(%d%d)/(%d%d)/(%d%d%d%d)$' )
local td,tm,ty = string.match( TARGET_DATE,'^(%d%d)/(%d%d)/(%d%d%d%d)$' )

print( d1,y1 ) -- debug
print( d2,y2 ) -- debug
print( td,ty ) -- debug

date1_tbl = { day = d1,month = m1,year = y1 }
date2_tbl = { day = d2,month = m2,year = y2 }

local time1 = os.time( date1_tbl )
local time2 = os.time( date2_tbl )
local target_time = os.time { day = td,month = tm,year = ty }

-- loop until both dates exceed target date
while time1 < target_time or time2 < target_time  do
    date1_tbl.day = date1_tbl.day + 14
    date2_tbl.day = date2_tbl.day + 14
    time1 = os.time( date1_tbl )
    time2 = os.time( date2_tbl )
end

-- rebuild new dates
local newdate1 = os.date( "%d/%m/%Y",time1 )
local newdate2 = os.date( "%d/%m/%Y",time2 )

print( newdate1 ) -- debug
print( newdate2 ) -- debug

相关文章

1.进入lua官网http://www.lua.org/ 2.点击download 3.点击get a binary 4.点击[Lua - joedf&#39;s ...
    Lua中的函数是一阶类型值(first-class value),定义函数就象创建普通类型值一样(只不过函数类型...
    并发是现实世界的本质特征,而聪明的计算机科学家用来模拟并发的技术手段便是多任务机制。大致上...
    Lua5.0的语法非常简洁,这从参考手册中的语法定义的规模(转换成标准BNF形式大概有100个左右的产...
LUA脚本文档中文翻译(基础)   介绍   Lua读作“鹿啊”,是一种据创作者说的类Pascal脚本语言。巴西...
1. 函数的使用 以下程序演示了如何在Lua中使用函数, 及局部变量 例e02.lua -- functions function pyth...