递归火山软件开发平台

标题: RAR文件解压类获取的压缩文件时间整数是什么? [打印本页]

作者: caoyiyi    时间: 2024-4-5 18:24
标题: RAR文件解压类获取的压缩文件时间整数是什么?
程序中已将所有要用到的资源文件都压缩到一个RAR压缩包中,以减少体积。
编程时用到相关文件时,就用“RAR文件解压类”解压缩需要的文件,但想在之前比较目录中已有的相同文件日期是不是最新的。用“取当前文件日期 ()”查看压缩包中文件日期时,发现返回一个很大的整数,想知道这个整数如何转换到火山PC的时间类型?


作者: b0y    时间: 2024-4-5 19:00
filetime  表示自1601年1月1日以来的100纳秒间隔数。
作者: Xelloss0618    时间: 2024-4-5 20:25
<火山程序 类型 = "通常" 版本 = 1 />

方法 文件时间到文本 <公开 静态 类型 = 文本型 注释 = "将FILETIME转换到指定格式的时间文本" 折叠 @禁止流程检查 = 真>
参数 文件时间 <类型 = 长整数>
参数 格式文本 <类型 = 文本型 注释 = "默认格式为: \"2022-03-21 09:19:05\",转换后不能超过256个字符." 注释 = "下列为可用的格式替换符:"
        注释 = "   %%  %字符  |  %n 换行符  |  %t 水平制表符" 注释 = "   %C  年份向下整除100          例: 20"
        注释 = "   %y  年份的后2位              例: 22" 注释 = "   %Y  完整的4位年份            例: 2022"
        注释 = "   %h  缩写的月份名称           例: Apr" 注释 = "   %b  缩写的月份名称           例: Apr"
        注释 = "   %B  完整的月份名称           例: April" 注释 = "   %m  十进制的月份             例: 04"
        注释 = "   %d  2位数的某月第N天         例: 01" 注释 = "   %e  2位的某月第N天,前补空格  例:  1"
        注释 = "   %a  缩写的星期名称           例: Fri" 注释 = "   %A  完整的星期名称           例: Friday"
        注释 = "   %u  十进制的星期数(1-7)      例: 5" 注释 = "   %w  星期数(0-6),0为星期天    例: 5"
        注释 = "   %j  3位数的某年第N天         例: 091" 注释 = "   %U  2位数的某年第N星期       例: 13"
        注释 = "   %W  2位数的某年第N星期       例: 13" 注释 = "   %D  等价于 %m/%d/%y          例: 04/01/22"
        注释 = "   %F  等价于 %Y-%m-%d          例: 2022-04-01" 注释 = "   %H  2位数的小时数(24小时制)  例: 16"
        注释 = "   %I  2位数的小时数(12小时制)  例: 04" 注释 = "   %M  2位数的分钟数            例: 15"
        注释 = "   %S  2位数的秒针数            例: 05" 注释 = "   %p  12小时进制的AM/PM        例: PM"
        注释 = "   %R  等价于 %H:%M             例: 16:15" 注释 = "   %T  等价于 %H:%M:%S          例: 16:15:05"
        注释 = "   %r  12小时制的时分秒时间     例: 04:15:05 PM" 注释 = "   %X  本地环境的12小时制时钟   例: 16:15:05"
        注释 = "   %x  本地环境的日期           例: 04/01/22" 注释 = "   %z  UTC格式的时区            例: +0800"
        注释 = "   %Z  时区的本地名称           例: 中国标准时间" 注释 = "   %c  本地环境的日期与时间     例: Fri Apr  1 16:59:32 2022"
        注释 = "" 注释 = "  格式替换符可以在中间加上#,部分无效果; 部分会将前面的补0或补"
        注释 = "空格去掉,比如\"%#F\"会解析为\"2022-4-1\"; 其中\"%#c\"和\"%#x\"会解析" 注释 = "为更长的日期时间格式." @默认值 = "%F %T">
{
    @ struct tm timeinfo;
    @ time_t rawtime = (time_t)(@<文件时间> / 10000000 - 11644473600)
    @ ::localtime_s(&timeinfo, &rawtime);
    @ WCHAR szTime[256] {0};
    @ ::wcsftime(szTime, sizeof(szTime), @<格式文本>.GetText(), &timeinfo);
    @ return @an<CVolString>(szTime);
}

方法 文件时间到时间 <公开 静态 类型 = 小数 注释 = "将FILETIME转换到火山的时间类型" 折叠>
参数 文件时间 <类型 = 长整数>
{
    返回 (时间操作类.时间戳到时间 ((整数)(文件时间 / 10000000 - 11644473600)))
}

作者: caoyiyi    时间: 2024-4-5 22:42
多谢大神




欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4