IsiR_19 Ответов: 3

Как удалить трейлинг 0 из моего года в моей дате


Привет Ребята

Хотел бы знать, может ли кто - нибудь помочь.

Примерно неделю или 2 назад что-то изменилось на моем производственном сервере,не уверен, были ли внесены изменения со стороны сетевой команды или были выпущены обновления windows, которые могли бы вызвать проблемы, но по какой-то причине мое приложение теперь читает CDate как 02018/01/02 вместо 2018/01/02.

Я запустил код на своей машине dev, развернул и протестировал службу в средах QA/ и pre-prod, и все они работают нормально, только на производственном сервере у меня есть эта проблема.

Что я уже пробовал:

Я проверил региональные настройки, и они, похоже, не изменились.
Отлажен/ и протестирован на других серверах, и служба работает нормально без каких-либо проблем

Maciej Los

Хранится ли значение даты в виде даты или в виде строки? Можете ли вы разместить точное значение, хранящееся на сервере?

3 Ответов

Рейтинг:
20

Maciej Los

Нет ничего плохого в использовании CDate функция, но я бы рекомендовал использовать более новую технику для преобразования строки в значение даты/времени по нескольким причинам. Больше вы найдете здесь: Функции Преобразования Типов (Visual Basic) | Microsoft Docs[^]

Пожалуйста, проверьте это: Синтаксический анализ строк даты и времени в .NET Framework | Microsoft Docs[^]
Так, DateTime.Parse или DateTime.ParseExact это то, что вы ищете.

В общем случае: вы должны использовать дату вместо строкового типа данных, чтобы избежать нескольких проблем в будущем. Обратите внимание, что разные CultureInfo[^], что может привести к тому, что дата (хранящаяся в строке) не будет конвертируемой.


Рейтинг:
2

IsiR_19

Обнаружена проблема, служба работала под другой учетной записью пользователя, при входе в систему обнаружилось, что год имел 5 лет в региональных настройках


Maciej Los

Как я уже упоминал в своем ответе, вы никогда не получите таких неприятностей, когда будете использовать тип данных date вместо string.
Овации,
Мацей
;)

Рейтинг:
18

A_Griffin

Вы можете использовать строку.Формат("{0:гггг/ММ/ДД}", DateObject)