【问题标题】:Converting String to System.DateTime to specific format for Office365将字符串转换为 System.DateTime 为 Office365 的特定格式
【发布时间】:2019-02-28 14:37:09
【问题描述】:

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

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

我正在寻找的是输入“2019 年 1 月 23 日”,ParseExact 会将其返回为“2019 年 1 月 23 日”。

我得到的是 $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”转换为类型 “系统。日期时间”。错误:“字符串未被识别为有效的日期时间。” + CategoryInfo : InvalidData: (:) [Get-MessageTrace], ParameterBindin...mationException + FullyQualifiedErrorId : ParameterArgumentTransformationError,Get-MessageTrace + PSComputerName:outlook.office365.com

【问题讨论】:

    标签: powershell office365


    【解决方案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' 周围的单引号以传递变量的值而不是变量的名称。

    【讨论】:

    • 我什至没有意识到第三部分,谢谢你的帮助。
    猜你喜欢
    • 2020-02-29
    • 1970-01-01
    • 1970-01-01
    • 2018-01-02
    • 2014-09-12
    • 2017-02-22
    • 1970-01-01
    • 2011-05-28
    • 2023-03-15
    相关资源
    最近更新 更多