Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 读取文件元数据时发生DateTime错误_Powershell_Datetime - Fatal编程技术网

Powershell 读取文件元数据时发生DateTime错误

Powershell 读取文件元数据时发生DateTime错误,powershell,datetime,Powershell,Datetime,我正在尝试编写一些PowerShell代码来对照片和其他媒体文件进行排序。文件的修改/创建日期并不总是准确的,因此我正在读取文件的元数据。我已成功完成并提取了创建日期。但我无法让PowerShell将字符串识别为日期 我想要的是能够以这种方式将日期重新排序为年-月日期格式: $metaDate.ToString("yyyy-MM-dd") 但我不相信metaDate是日期类型,它是一个字符串 因此,我尝试使用以下代码将字符串转换为日期: $date = [datetime]::ParseExa

我正在尝试编写一些PowerShell代码来对照片和其他媒体文件进行排序。文件的修改/创建日期并不总是准确的,因此我正在读取文件的元数据。我已成功完成并提取了创建日期。但我无法让PowerShell将字符串识别为日期

我想要的是能够以这种方式将日期重新排序为年-月日期格式:

$metaDate.ToString("yyyy-MM-dd")
但我不相信metaDate是日期类型,它是一个字符串

因此,我尝试使用以下代码将字符串转换为日期:

$date = [datetime]::ParseExact($metaDate,"dd/MM/yyyy HH:mm",$null)
但是,它不断返回此错误:

使用“3”参数调用“ParseExact”时出现异常:“字符串未被识别为有效的日期时间。”

将变量写入控制台时,日期“显示”为正常字符串:

26/‎10/‎2017 ‏‎18:23
但是检查长度返回21-我只看到16个字符(如果你计算空格)

gettype()返回:

修剪没有区别

有人有过使用PowerShell&file元数据的想法或经验吗?此字符串中是否有隐藏字符

请注意,在ParseExact命令中手动输入相同的字符串是有效的(长度返回16),因此我从文件中获取的字符串/变量有些不确定

非常感谢 达斯

此字符串中是否有隐藏字符

实际上,存储在
$metaDate
中的日期字符串包含,即(
U+200E
())和(
U+200F
())。
使用
-replace'\p{Cf}'
删除它们:

 $date=[datetime]::ParseExact($metaDate -replace '\p{Cf}', 'dd/MM/yyyy HH:mm', $null)

要可视化字符串中的所有字符,请参见。

我将检查
$metaDate | Format Hex
返回的内容。很高兴听到这个消息,@DazAuto。
 $date=[datetime]::ParseExact($metaDate -replace '\p{Cf}', 'dd/MM/yyyy HH:mm', $null)