Почему строки DateTime дополняются нулями в одной Windows 10 системе, но не в большинстве других? - PullRequest
0 голосов
/ 05 марта 2020

Следующий код на нескольких машинах устанавливает SQL Строка даты и времени сервера от «СЕЙЧАС» к той же дате, но в полночь.

DateTime deleteDateThreshold = DateTime.Now;
string deleteDateThresholdS = DateTime.Now.ToString();
deleteDateThresholdS = deleteDateThresholdS.Substring(0, 10) + " " + "00:00:00 AM";

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

Затем строка анализируется в DateTime; и вычеркнул из него один день. Разбирается одна система, потому что Подстрока встречает дополнительный символ, значение 2, потому что строка даты не дополняется нулями (04/04/2020) Я наконец смог запечатлеть оскорбительное время; и это не DateTime, поэтому должно произойти исключение.

Вот код, который анализирует.

deleteDateThreshold = DateTime.Parse(deleteDateThresholdS, us);
deleteDateThreshold = deleteDateThreshold.AddDays(-1);

в большинстве систем строка даты выглядит следующим образом

"03/04/2020 00:00:00 AM"

Однако в системе, которая выдает исключение даты не заполняются нулями, а строка выглядит следующим образом:

"3/4/2020 2 00:00:00"

Почему в этой строке 2 и почему месяц и день не дополняются нулями?

1 Ответ

2 голосов
/ 05 марта 2020

Если подумать, я мог бы вычесть обратно до полуночи, но я подумал, что это более быстрый путь.

Я бы сказал, что <somedate>.Date или DateTime.Today (спасибо, @ckuri), вероятно, самый простой способ добраться до (местной) полуночи для somedate / today. (Возможно, подумайте об использовании UtcNow во всех ваших системах)

Какова истинная природа вашей проблемы, я не уверен в этом, но я почти уверен, что этого не произойдет, если вы сохраните свои даты как даты и не преобразовывать в и из строк, чтобы управлять ими; SQL Сервер имеет типы данных даты, которые сопоставляются с типами данных CLR - вообще не должно быть необходимости хранить, обрабатывать, передавать или манипулировать датой в виде строки в этой системе

...