Nia*_*awv 6 powershell datetime
是否可以在 PowerShell 中仅检索日期时间对象的日期部分?原因是我需要将LastWriteTime文件的属性与今天的日期进行比较,以确定是否备份文件。按原样,日期时间对象还包括时间,当我执行以下操作时,该时间将始终评估为 false:
if ($fileDate -eq $currentDate) {
# Do backup
}
Run Code Online (Sandbox Code Playgroud)
无论如何我还没有找到这样做。如果我们使用格式运算符或方法,它会将对象转换为字符串对象。如果您尝试将其转换回日期时间对象,它会将时间附加到该对象上。可能很简单,但我已经研究这个脚本一段时间了,这是最后一个被破坏的部分。
编辑:正如 @jessehouwing 在下面的评论中指出的那样,我的答案不必要地复杂。只需使用$datetime.Date.
有几种方法可以获取没有任何时间组件的 DateTime(即设置为相关日期开始时的午夜 00:00:00):
$dateTime = <some DateTime>
$dateWithoutTime = $dateTime.AddSeconds(-$dateTime.Second).AddMinutes(-$dateTime.Minute).AddHours(-$dateTime.Hour)
Run Code Online (Sandbox Code Playgroud)
或者
$dateTime = <some DateTime>
$dateWithoutTime = Get-Date -Date ($dateTime.ToString("yyyy-MM-dd"))
Run Code Online (Sandbox Code Playgroud)
我循环运行每个版本,迭代 100,000 次。第一个版本用时16.4秒,第二个版本用时26.5秒。所以我会选择第一个版本,尽管它看起来有点复杂。
基于此处找到的答案: https: //techibee.com/powershell/powershell-how-to-query-date-time-without-seconds/2737(该文章是关于从 DateTime 中删除秒数。但它可以是延长至剥离小时、分钟和秒)。
这不会回答如何删除日期时间上的时间,而是为了确定何时备份的验证目的。
我建议您减去两个给定的日期值,然后比较结果(如果已满足备份总小时数)。
if (( $currentDate - $fileDate ).TotalDays > 7) {
# Do Backup
}
Run Code Online (Sandbox Code Playgroud)
您还可以验证以下内容
Days :
Hours :
Minutes :
Seconds :
Milliseconds :
Ticks :
TotalDays :
TotalHours :
TotalMinutes :
TotalSeconds :
TotalMilliseconds :
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15325 次 |
| 最近记录: |