当文件名可能包含UTF8字符时,如何将DateLastModified作为整数



我正在Windows环境中编写Lua(5.3(;结果将在许多国家/地区使用,因此文件处理必须满足多个区域设置(这排除了lfs和Penlight库(以及许多日期格式(由用户选择(。

我使用luacom和Microsoft FileObject访问文件,这消除了文件名的问题,但我在使用DateLastModified属性时遇到了困难,该属性以文本形式返回。

我需要比较数百个文件的DateLastModified,以确定哪一个是最新的。

我考虑过的一种技术将涉及(通过注册表(将PC的短日期格式临时设置为可以简单解析的可预测格式;yyyy-MM-dd";(并在之后重置(,但我本能地反对篡改用户的注册表设置,尤其是那些在我的程序之外有影响的设置。

我可以将每个文件复制到一个临时文件中,该文件的名称允许lfs以整数秒的形式获取修改数据,但这会严重影响本应是相当基本的实用程序的运行时间。

有没有我忽略的解决方案,或者我将不得不选择最不坏的选项?注意:我在目标环境中可用的库中受到了很大的限制。

尽管Luacom的默认行为是以文本字符串的形式返回日期(基于当前区域设置(,但可以修改此行为:

3.4.6日期类型从COM转换为Lua时,默认行为是将DATE值转换为根据当前区域设置格式化的字符串。反之亦然:LuaCOM将根据当前语言环境格式化的字符串转换为DATE值。脚本可以通过将luacom表(luacom名称空间(的DateFormat字段设置为字符串"来改变从字符串到表的转换;表";。该表将包含Day、DayOfWeek、Month、Year、Hour、Minute、Second和Milliseconds字段。要将转换返回到字符串,请将DateFormat字段设置为";字符串";。请小心使用此功能,因为它可能会破坏与其他脚本的兼容性。

来自Luacom文档

相关内容

  • 没有找到相关文章

最新更新