[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] PowerShell怎么调用api[已解决]

本帖最后由 czjt1234 于 2024-4-12 20:25 编辑

DosDateTimeToFileTime
https://learn.microsoft.com/zh-cn/windows/win32/api/winbase/nf-winbase-dosdatetimetofiletime

FileTimeToSystemTime
https://learn.microsoft.com/zh-cn/windows/win32/api/timezoneapi/nf-timezoneapi-filetimetosystemtime

我想调用这两个api处理dos格式的时间,请问应该怎么写

QQ 20147578

本帖最后由 czjt1234 于 2024-4-12 19:35 编辑

回复 2# went


是一个64位无符号整数
比如 0x5C8A688A

纠正:32位

QQ 20147578

TOP

https://learn.microsoft.com/zh-c ... sdatetimetofiletime
根据这里按二进制逐位分析,可以得到年月日时分秒,但一来麻烦,二来秒的处理结果有问题

QQ 20147578

TOP

回复 7# terse


可以转的,年月日时分都没问题
但是秒要除以2
我就纳闷4秒和5秒怎么区分,还是就不能区分
所以想用API对比一下计算结果

QQ 20147578

TOP

本帖最后由 czjt1234 于 2024-4-12 19:49 编辑

回复 9# went

用6楼的换算
当前时间 2024/04/12 19:39:57
MS-DOS wFatDate:588C wFatTime:9CFD

但是用9楼的计算0x588C9CFD报错
无法将“DosDateTimeToFileTime”的参数“wFatTime”(其值为“40189”)转换为类型“System.Int16”:“无法将值“40189”转换为
类型“System.Int16”。错误:“值对于 Int16 太大或太小。””
所在位置 行:44 字符: 1
+ [WinApi]:osDateTimeToFileTime($wFatDate,$wFatTime,[ref]$st_file_tim ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: ( [], MethodException
    + FullyQualifiedErrorId : MethodArgumentConversionInvalidCastArgument

QQ 20147578

TOP

回复 10# went

这个代码可以运行,不过我的纠结是秒的准确数,因为这样没有单数的秒了

还有小细节,这个时间是UTC时间,转换为系统时间要+8小时

QQ 20147578

TOP

回复 14# went


    非常感谢

QQ 20147578

TOP

返回列表