caoyiyi 发表于 2024-4-5 18:24:49

RAR文件解压类获取的压缩文件时间整数是什么?

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

b0y 发表于 2024-4-5 19:00:13

filetime表示自1601年1月1日以来的100纳秒间隔数。

Xelloss0618 发表于 2024-4-5 20:25:18

<火山程序 类型 = "通常" 版本 = 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"
      注释 = "   %d2位数的某月第N天         例: 01" 注释 = "   %e2位的某月第N天,前补空格例:1"
      注释 = "   %a缩写的星期名称         例: Fri" 注释 = "   %A完整的星期名称         例: Friday"
      注释 = "   %u十进制的星期数(1-7)      例: 5" 注释 = "   %w星期数(0-6),0为星期天    例: 5"
      注释 = "   %j3位数的某年第N天         例: 091" 注释 = "   %U2位数的某年第N星期       例: 13"
      注释 = "   %W2位数的某年第N星期       例: 13" 注释 = "   %D等价于 %m/%d/%y          例: 04/01/22"
      注释 = "   %F等价于 %Y-%m-%d          例: 2022-04-01" 注释 = "   %H2位数的小时数(24小时制)例: 16"
      注释 = "   %I2位数的小时数(12小时制)例: 04" 注释 = "   %M2位数的分钟数            例: 15"
      注释 = "   %S2位数的秒针数            例: 05" 注释 = "   %p12小时进制的AM/PM      例: PM"
      注释 = "   %R等价于 %H:%M             例: 16:15" 注释 = "   %T等价于 %H:%M:%S          例: 16:15:05"
      注释 = "   %r12小时制的时分秒时间   例: 04:15:05 PM" 注释 = "   %X本地环境的12小时制时钟   例: 16:15:05"
      注释 = "   %x本地环境的日期         例: 04/01/22" 注释 = "   %zUTC格式的时区            例: +0800"
      注释 = "   %Z时区的本地名称         例: 中国标准时间" 注释 = "   %c本地环境的日期与时间   例: Fri Apr1 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 {0};
    @ ::wcsftime(szTime, sizeof(szTime), @<格式文本>.GetText(), &timeinfo);
    @ return @an<CVolString>(szTime);
}

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

caoyiyi 发表于 2024-4-5 22:42:16

多谢大神
页: [1]
查看完整版本: RAR文件解压类获取的压缩文件时间整数是什么?