开发者

How to create a file name with current date & time in lua?

I want to write a table into a file which named by the date and time it created. I can open a file with hard coded name, write the table into it, like below:

FILENAME_EVENTS="Events.txt"            -- filename in string
local fp=io.open(FILENAME_EVENTS, a)        -- open a new file with the file name
io.output(FILENAME_EVENTS)      -- redirect the io output to the file
-- write the table into the file
for i, e in ipairs(eventlist) do io.write(e.title, e.category, e.ds, e.de, e.td) end

But when I try to:

FILENAME_EVENTS=os.date().."\.txt"          -- filename in string with date
local fp=io.open(FILENAME_EVENTS, a)        -- open a new file with the file name开发者_如何学JAVA
io.output(FILENAME_EVENTS)      -- redirect the io output to the file
-- write the table into the file
for i, e in ipairs(eventlist) do io.write(e.title, e.category, e.ds, e.de, e.td) end

I got an error bad argument #1 to 'output' (10/06/11 17:45:01.txt: Invalid argument) stack traceback: [C]: in function 'output'

Why this "10/06/11 17:45:01.txt" is an invalid argument? due to it contains spaces or '/'? Or any other reasons?

BTW, the platform is win7 Pro + Lua 5.1.4 for win


Apparently it's both / and : that bork. The first probably because it is regarded as directory separator. This can be demonstrated as below:

fn=os.date()..'.txt'
print(io.open(fn,'w')) -- returns invalid argument

fn=os.date():gsub(':','_')..'.txt'
print(io.open(fn,'w')) -- returns nil, no such file or directory

fn=os.date():gsub('[:/]','_')..'.txt'
print(io.open(fn,'w')) -- returns file(0x...), nil <-- Works

BTW, instead of using strange gsub and concatenation tricks, you might also consider using something like

fn=os.date('%d_%m_%y %H_%M.txt')
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜