Преобразование строки в System.DateTime в определенный формат для Office365 - PullRequest
0 голосов
/ 28 февраля 2019

У меня проблема с преобразованием пользовательского ввода в тип DateTime при возврате в определенном формате.Я искал несколько часов, и все, что я пробовал до сих пор, не сработало.

Когда я ввожу дату, я хочу, чтобы она оставалась в том формате, в котором я ее ввела, чтобы Get-MessageTrace могла ее прочитать.

Мне нужно ввести "1/ 23/2019 "и ParseExact отстреляли бы это как" 23.01.2009 ".

Я получаю $NewDate1 бытие" Среда, 23 января 2019 г. 12:01:00:00 "Я, вероятно, делаю это неправильно или, возможно, делаю что-то не так, но я мог бы использовать некоторую помощь, пожалуйста.

$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 голосов
/ 28 февраля 2019

Во-первых, что касается форматирования строки даты, строчные буквы «m» представляют минуты, а заглавные буквы «M» - месяцы.Вот почему «23.01.2009» интерпретируется как среда, 23 января 2019 г. 12: 01 : 00 AM (акцент на первую минуту дня).Вероятно, вам понадобится шаблон «М / д / гггг».

Во-вторых, я не совсем уверен, что вы понимаете разбор дат.ParseExact не берет строку и «отбрасывает ее» как дату с определенным строковым представлением.ParseExact преобразует строку в формате даты в DateTime объект.Этот DateTime объект не имеет собственного формата или строкового представления (если вы не считаете ToString() каноническим форматом даты), это просто дата.Если позднее вам понадобится строковое представление этой даты, вам придется преобразовать его в строку.

В-третьих, вы передаете строку со значением «$ NewDate1» в -StartDateотсюда и исключение:

Невозможно преобразовать значение "$ NewDate1" в тип "System.DateTime"

Удалить одинарные кавычки вокруг $ NewDate1, чтобы передатьзначение переменной, а не имя переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...