【问题标题】:Converting other zone date time format to local date-time format in PowerShell在 PowerShell 中将其他区域日期时间格式转换为本地日期时间格式
【发布时间】:2017-05-29 05:36:45
【问题描述】:

我正在尝试执行日期时间比较。

日志文件中的日期时间 - 2015 年 8 月 4 日星期二 17:05:41

来自 get-date 命令的本地系统日期时间 -

6. elokuuta 2015 10:18:47

我在谷歌翻译上翻译后,时间是 2015 年 8 月 6 日 10:18:47。

如何转换此日期/时间格式,以便进行比较?

我尝试了多种方法和选择,但没有成功。

到目前为止我的脚本:

# To get today's date
$Today=[datetime]::Today
# Output is 6. elokuuta 2015 0:00:00

$log_date = "Tue Aug  4 17:05:41 2015"

我在某处使用new-object system.globalization.datetimeformatinfo 它可以实现,但我不知道如何更改当前日期时间。 https://technet.microsoft.com/en-us/library/ff730960.aspx

【问题讨论】:

    标签: date powershell datetime powershell-2.0 powershell-3.0


    【解决方案1】:

    [DateTime] 对象没有格式。自某个时间点(01/01/0001 00:00:00.0000000)以来,它只是经过了ticks(0.0000001 秒)的数量。该格式仅用于将[DateTime] 对象保存为字符串或将其显示给用户,因为635744160000000000 ticks 对用户来说并不是真正可以理解的。

    您只需要解析字符串以获取[DateTime] 对象:

    $log_date = [datetime]::ParseExact('Tue Aug  4 17:05:41 2015','ddd MMM d HH:mm:ss yyyy',[cultureinfo]::InvariantCulture,'AllowInnerWhite')
    

    现在您有两个 [DateTime] 对象,您可以比较它们:

    $Today -eq $log_date
    $Today -lt $log_date
    $Today -gt $log_date
    

    或者找出它们之间的区别:

    $Today - $log_date
    

    【讨论】:

    • 你能告诉我如何改变([datetime]::TryParseExact($_,'ddd MMM dd HH:mm:ss yyyy',[cultureinfo]::InvariantCulture,'None',[ ref]$ParseDate)) 到上述格式。如果你还记得这段代码。
    • @404 'ddd MMM dd HH:mm:ss yyyy' -> 'ddd MMM d HH:mm:ss yyyy', 'None' -> 'AllowInnerWhite'.
    • 当我使用上面的代码和这个stackoverflow.com/questions/31785186/…。我收到错误“无法找到类型 [cultureinfo]:确保已加载包含此类型的程序集”
    • @404 你确定,你没有拼错什么吗?并且可能在 PS v2 中您必须使用完整的类型名称[System.Globalization.CultureInfo]。我用v2的时间不长,所以不能肯定。
    • 我检查了它的 PS v2. :( 不知道如何在 v2 上添加它。需要在谷歌上搜索。
    猜你喜欢
    • 2019-01-14
    • 2013-03-24
    • 2023-03-18
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-09
    • 2015-03-23
    相关资源
    最近更新 更多