将String转换为Office365的特定格式的System.DateTime

时间:2019-02-27 23:16:48

标签: powershell office365

在以特定格式返回用户输入时,将用户输入转换为DateTime类型时遇到了问题。我已经搜索了几个小时,到目前为止我尝试过的所有方法都无效。

输入日期时,我希望它保持输入时的格式,以便Get-MessageTrace可以读取它。

我要输入的是“ 1/23/2019”,ParseExact会将其射回“ 1/23/2019”。

我得到的是$NewDate1是“ 2019年1月23日,星期三,12:01:00 AM” 我可能做错了或做错了,但是请帮忙。

$UserEmail = Read-Host -Prompt 'Enter your WT email address'
$Date1 = Read-Host -Prompt 'Enter the first date (MM/DD/YYYY)'
$Date2 = (Read-Host -Prompt 'Enter the second date (MM/DD/YYYY)'


$NewDate1 = [datetime]::parseexact($Date1, 'm/d/yyyy', $null)
$NewDate2 = [datetime]::parseexact($Date2, 'm/d/yyyy', $null) 


Get-MessageTrace -RecipientAddress 'UserEmail' -StartDate '$NewDate1'
-EndDate 'NewDate2'

我收到的错误:

  

无法处理参数'StartDate'上的参数转换。无法将值“ $ NewDate1”转换为类型   “ System.DateTime”。错误:“字符串未被识别为有效的DateTime。”       + CategoryInfo:InvalidData:(:) [Get-MessageTrace],ParameterBindin ... mationException       + FullyQualifiedErrorId:ParameterArgumentTransformationError,Get-MessageTrace       + PSComputerName:outlook.office365.com

1 个答案:

答案 0 :(得分:1)

首先,关于日期字符串格式,小写字母“ m”代表分钟,大写字母“ M”代表月份。这就是为什么将'1/23/2019'解释为2019年1月23日星期三12: 01 :00 AM(强调一天的第一分钟)。您可能想要的模式是“ M / d / yyyy”。

第二,我不完全确定您了解日期解析。 ParseExact不会使用字符串,而是使用特定的字符串表示形式将其“回击”为日期。 ParseExact将转换为日期格式的字符串转换为DateTime对象。该DateTime对象没有固有的格式或字符串表示形式(除非您认为ToString()是规范的日期格式),它只是一个日期。如果以后需要该日期的字符串表示形式,则必须将其转换为字符串。

第三,您将一个值为“ $ NewDate1”的字符串传递给-StartDate,因此出现异常:

  

无法将值“ $ NewDate1”转换为类型“ System.DateTime”

删除'$ NewDate1'周围的单引号以传递变量的值,而不是变量的名称。

相关问题