Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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
String 使用PowerShell将字符串转换为日期_String_Date_Powershell_Datetime - Fatal编程技术网

String 使用PowerShell将字符串转换为日期

String 使用PowerShell将字符串转换为日期,string,date,powershell,datetime,String,Date,Powershell,Datetime,我有一个日期字符串,格式如下: July 27th, 2016 December 3rd, 2014 August 1st, 1998 March 2nd, 1979 如何使用PowerShell将日期转换为以下日期 2016-07-27 2014-12-03 1998-08-01 1979-03-02 我会选择带有一些正则表达式的ParseExact()来删除所有th、rd和st。 您只需在ToString()中使用正确的格式即可 编辑根据@JosefZ建议更新代码 foreach ($d

我有一个日期字符串,格式如下:

July 27th, 2016
December 3rd, 2014
August 1st, 1998
March 2nd, 1979
如何使用PowerShell将日期转换为以下日期

2016-07-27
2014-12-03
1998-08-01
1979-03-02

我会选择带有一些正则表达式的
ParseExact()
来删除所有th、rd和st。 您只需在
ToString()中使用正确的格式即可

编辑根据@JosefZ建议更新代码

foreach ($date in @(
    'July 27th, 2016'
    'December 3rd, 2014'
    'August 1st, 1998'
    'March 2nd, 1979'
)) {
    $clean = $date -replace '(st|nd|rd|th),'
    $dateObject = [datetime]::ParseExact($clean, 'MMMM d yyyy', [System.Globalization.CultureInfo]::InvariantCulture)
    # Apparently, this works too ...    
    $dateObject = [datetime]$clean  
    $dateObject.ToString('yyyy-MM-dd')
}

我会选择带有一些正则表达式的
ParseExact()
来删除所有th、rd和st。 您只需在
ToString()中使用正确的格式即可

编辑根据@JosefZ建议更新代码

foreach ($date in @(
    'July 27th, 2016'
    'December 3rd, 2014'
    'August 1st, 1998'
    'March 2nd, 1979'
)) {
    $clean = $date -replace '(st|nd|rd|th),'
    $dateObject = [datetime]::ParseExact($clean, 'MMMM d yyyy', [System.Globalization.CultureInfo]::InvariantCulture)
    # Apparently, this works too ...    
    $dateObject = [datetime]$clean  
    $dateObject.ToString('yyyy-MM-dd')
}

除了@Andrii Matus、@BartekB所示的方法之外,下面是实现相同目的的另一种方法

$date_str = @(
    'July 27th, 2016'
    'December 3rd, 2014'
    'August 1st, 1998'
    'March 2nd, 1979'
)

foreach ($date in $date_str){
    $newformat = $date -replace '(st|nd|rd|th),'
    get-date $newformat -UFormat "%Y-%m-%d"
}

除了@Andrii Matus、@BartekB所示的方法之外,下面是实现相同目的的另一种方法

$date_str = @(
    'July 27th, 2016'
    'December 3rd, 2014'
    'August 1st, 1998'
    'March 2nd, 1979'
)

foreach ($date in $date_str){
    $newformat = $date -replace '(st|nd|rd|th),'
    get-date $newformat -UFormat "%Y-%m-%d"
}

$dateObject=[datetime]$clean
应该足够了。对于我的语言环境,
ParseExact
调用带有“3”参数的“ParseExact”时引发异常:“字符串未被识别为有效的日期时间。”。将第三个参数
$null
替换为
[System.Globalization.CultureInfo]::不变量文化
$dateObject=[datetime]$clean应该足够了。对于我的语言环境,
ParseExact
调用带有“3”参数的“ParseExact”时引发异常:“字符串未被识别为有效的日期时间。”。将第三个参数
$null
替换为
[System.Globalization.CultureInfo]::InvariantCulture