获取日期 formatting/culture
Get-Date formatting/culture
如何指定输入字符串的哪一部分是日期和月份?
如果输入是 01/10/2017
,则可以读作 2017 年 10 月 1 日 和 2017 年 1 月 10 日。两者都正确。
我想明确指出 01
是日期,10
是月份,这样无论语言环境和时间格式如何,我都能得到一致的结果。
示例代码:
get-date -Date '01/10/2017'
输出为:
Tuesday, January 10, 2017 12:00:00 AM
期望的输出是:
Sunday, October 01, 2017 12:00:00 AM
我有一个解决方案给你。它要求文化作为论据之一。
([datetime]::ParseExact($date,"dd/MM/yyyy",[Globalization.CultureInfo]::CreateSpecificCulture('en-GB')))
不必指定文化。但是,它的参数确实如此,否则你会得到一个错误:
Cannot find an overload for "ParseExact" and the argument count: "2".
[cultureinfo]::InvariantCulture
或 $null
可以用作第三个参数:
$date = "01/10/2017"
[datetime]::ParseExact($date, "dd/MM/yyyy", [cultureinfo]::InvariantCulture)
[datetime]::ParseExact($date, "dd/MM/yyyy", $null)
三种情况下的输出
01 October 2017 00:00:00
试试这个:
Get-Date(Get-Date -Date $date -Format 'dd/MM/yyyy')
您可以为单个命令(或命令块)强制执行文化。这应该有助于避免日期混乱。
PS C:\> [System.Threading.Thread]::CurrentThread.CurrentUICulture = "en-US" ; [System.Threading.Thread]::CurrentThread.CurrentCulture = "en-US"; get-date -Date '01/10/2017'
Tuesday, January 10, 2017 12:00:00 AM
PS C:\> [System.Threading.Thread]::CurrentThread.CurrentUICulture = "en-GB" ; [System.Threading.Thread]::CurrentThread.CurrentCulture = "en-GB"; get-date -Date '01/10/2017'
01 October 2017 00:00:00
如何指定输入字符串的哪一部分是日期和月份?
如果输入是 01/10/2017
,则可以读作 2017 年 10 月 1 日 和 2017 年 1 月 10 日。两者都正确。
我想明确指出 01
是日期,10
是月份,这样无论语言环境和时间格式如何,我都能得到一致的结果。
示例代码:
get-date -Date '01/10/2017'
输出为:
Tuesday, January 10, 2017 12:00:00 AM
期望的输出是:
Sunday, October 01, 2017 12:00:00 AM
我有一个解决方案给你。它要求文化作为论据之一。
([datetime]::ParseExact($date,"dd/MM/yyyy",[Globalization.CultureInfo]::CreateSpecificCulture('en-GB')))
不必指定文化。但是,它的参数确实如此,否则你会得到一个错误:
Cannot find an overload for "ParseExact" and the argument count: "2".
[cultureinfo]::InvariantCulture
或 $null
可以用作第三个参数:
$date = "01/10/2017"
[datetime]::ParseExact($date, "dd/MM/yyyy", [cultureinfo]::InvariantCulture)
[datetime]::ParseExact($date, "dd/MM/yyyy", $null)
三种情况下的输出
01 October 2017 00:00:00
试试这个:
Get-Date(Get-Date -Date $date -Format 'dd/MM/yyyy')
您可以为单个命令(或命令块)强制执行文化。这应该有助于避免日期混乱。
PS C:\> [System.Threading.Thread]::CurrentThread.CurrentUICulture = "en-US" ; [System.Threading.Thread]::CurrentThread.CurrentCulture = "en-US"; get-date -Date '01/10/2017'
Tuesday, January 10, 2017 12:00:00 AM
PS C:\> [System.Threading.Thread]::CurrentThread.CurrentUICulture = "en-GB" ; [System.Threading.Thread]::CurrentThread.CurrentCulture = "en-GB"; get-date -Date '01/10/2017'
01 October 2017 00:00:00