string - 将日期格式从 DD.MM.YYYY 转换为 YYYY-MM-DD
问题描述
我在磁盘上有德语格式的文件夹:“01.05.2019”,我想将其转换为英文格式:“2019-05-01”。
我正在使用 PowerShell。这样做有什么花哨的功能吗?还是我应该获取所有子字符串并重新排序?
目前我只收集字符串:
$OrgDir = "P:\Fotos\Import"
$folders = Get-ChildItem $($OrgDir) -Directory
foreach ($dir in $folders) {
Write-Host "folder: " $dir
}
解决方案
用于[DateTime]::ParseExact()
避免日期解析器混淆月份和日期:
$OrgDir = "P:\Fotos\Import"
$folders = Get-ChildItem $OrgDir -Directory
foreach ($dir in $folders) {
Write-Host "folder: $([DateTime]::ParseExact($dir.Name, "dd.MM.yyyy", $null).ToString("yyyy-MM-dd"))"
}
上面打印出转换后的名称。但是,为了有效地重命名文件,我建议这样做:
Get-ChildItem $OrgDir -Directory |
ForEach-Object {
$_ | Rename-Item -NewName (
[DateTime]::ParseExact($_.Name, "dd.MM.yyyy", $null).ToString("yyyy-MM-dd")
)
}
$OrgDir
鉴于文件夹中的所有目录都以这种方式命名,这行 PowerShell 将所有目录重命名为新的日期格式。
更新:
正如@Matt Johnson 指出的那样,$null
将您的系统默认文化用于ParseExact(string, format, culture)
(以及ToString(format, culture)
)。根据您的系统当前具有的文化设置,这可能会也可能不会导致问题。
为确保这些设置不会干扰此功能,请使用和[System.Globalization.CultureInfo]::InvariantCulture
中的区域性参数。ParseExact()
ToString()
推荐阅读
- keras - CNN LSTM 视频分类
- powerbi - 问:Power BI Dax 计算,场景实际与几周
- r - 从 2D 数组为 LSTM 模型创建 3D 数组
- java - Java play框架为所有请求添加响应头
- css - 将图标放在它旁边和中间
- javascript - 使用 React Hooks 计算状态值的总和
- python - 在 python 中将二维数组写入 CSV 文件
- c++ - 使用 Boost C++ 使用管道将输出从子进程发送到父进程(将标准输出重定向到管道)
- firebase - Firestore 规则:用户访问包含 userId 的集合
- python - Python - 使用 PIL 从图像中提取 EXIF 元数据。无法复制 exifdata.com 产生的结果