C # DateTime Формат ГГММДДччмммсстнп - PullRequest
0 голосов
/ 25 мая 2018

В настоящее время я использую стороннюю DLL для запуска некоторых своих программ.

До недавнего времени я решил перенести ее на новый сервер под управлением ОС Windows Server 2016.

В библиотеке неожиданно появляется сообщение об ошибке:

System.FormatException: неправильный формат.'YYMMDDhhmmsstnnp'

Я посмотрел здесь https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings, но ничего не увидел для t, nn и p.

Кто-нибудь распознает формат выше и знает, что на самом деле такое t nn?и р?

А как мне на самом деле решить проблему?

Спасибо

1 Ответ

0 голосов
/ 25 мая 2018

Хорошо, после небольшой детективной работы (ну, поиска) я думаю, что вы, вероятно, используете библиотеку SMPPClient, и что ошибка происходит от этой строки .Он не пытается использовать это как строку формата - он только сообщает об этом (бесполезно, IMO) как ожидаемый формат строки.

Это на самом деле проверка с использованием этого регулярного выражения:

"^[0-9][0-9][0-1][0-9][0-3][0-9][0-2][0-9][0-5][0-9][0-5][0-9][0-9][0-4][0-9][\\+\\-R]$"

В спецификации SMPP v5 поясняется форматирование:

  • 'YY' последние две цифры года (00-99)
  • ММ месяц (01-12)
  • ДД день (01-31)
  • чч час (00-23)
  • 'мм'минуты (00-59)
  • ' сс 'секунды (00-59)
  • ' t 'десятых секунды (0-9)
  • ' nn 'Разница во временив четверть часа между местным временем (как указано в первых 13 октетах) и временем UTC (универсальная постоянная времени) (00-48).
  • 'p':
    «+» Местное время указано в четвертичасы продвинуты по отношению к времени UTC.
    «-» Местное время указывается с задержкой в ​​четверть часа по отношению к времени UTC.

Это не то, что я ожидал бы для обработки строки обычного формата в .NET.

Я бы предложил следующие шаги:

  • Узнайте, какое значение он пытался проанализировать (это может быть сложно, я понимаю)
  • Определите, откуда это значение (генерируется ли оно в другом месте кода, возможно, в вашем кодеили это данные, происходящие за пределами вашей системы?)
  • Записать небольшую программу для просто , которая выполняет это регулярное выражение как на рабочей машине, так и на проблемной машине, чтобы выяснить, заключается ли проблема в том, чтоПоведение регулярных выражений изменилось, или проанализированные данные изменились

My догадываюсь , что некоторый код где-то использует обычное форматирование DateTime для создания части этой строки, а затемнастраивая его для последней части ... и что в вашей новой системе есть некоторые языковые изменения, которые влияют на вещи.Например, даже если вы отформатируете с явным форматом, он все равно будет использовать календарную систему той культуры, которую он использует - если вы случайно форматируете в негригорианский календарь, это может определенно повлиять на ситуацию.(Общее исправление заключается в явном использовании CultureInfo.InvariantCulture при форматировании машиночитаемой строки.)

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