Неправильный формат даты и времени - PullRequest
0 голосов
/ 21 мая 2019

Когда я запускаю следующий код в DotNetFiddle , я получаю ожидаемый результат:

var myDate = new DateTime(2019, 6, 1);
Console.WriteLine(myDate.ToString("MM/dd/yy")); 

// Output is: 06/01/19

Но когда я запускаю точно такой же код в совершенно новом консольном приложении C #(.NET Framework 4.5.2) или в окне C # Interactive я получаю следующий вывод:

06-01-19

Почему консольное приложение и C # Interactiveзаменить окно / на - на выходе?Исходя из этого ответа и документации , я ожидаю, что дата будет ограничена /, а не -.В этом примере из документации Microsoft он показывает вывод, содержащий /:

Console.WriteLine("The current date and time: {0:MM/dd/yy H:mm:ss zzz}", 
                   thisDate2); 
// The example displays the following output:
//    The current date and time: 06/10/11 15:24:16 +00:00

1 Ответ

2 голосов
/ 21 мая 2019

При работе со строками формата даты и времени символ / является особым, как d, M или y.Это означает использование определяемого системой символа разделителя даты .

Таким образом, системный разделитель даты в DotNetFiddle равен /, а разделитель в вашей системе - -.

Если вам действительно всегда нужен символ /, этот отрывок из связанной документации поможет:

Чтобы изменить разделитель даты для конкретной строки даты и времени, укажитесимвол-разделитель внутри литерального строкового разделителя.Например, строка пользовательского формата mm'/'dd'/'yyyy создает строку результата, в которой "/" всегда используется в качестве разделителя даты.

Будьте осторожны с этим.Отмена системы и выбор пользователя не должны быть легкомысленными.Например, я иногда вижу, что люди хотят сделать это для того, чтобы отформатировать дату для использования в команде SQL, и это never okay;если вы форматируете даты как строки для SQL, а не используете параметры запроса, вы делаете что-то очень неправильное.

...