Jenkins - проблемы с выводом даты в определенном формате

Хочу поделиться одной проблемой в Дженкинсе на которую было потрачено времени больше чем хотелось бы.
код в тесте выглядит вот так:

string dateNow = DateTime.Now.AddDays(2).ToString("MM/dd/yyyy");

т.е. я ожидаю что в нужное поле будет вставлена переменная dateNow содержащее время в формате 05/10/2016, - так и происходит когда я запускаю тест из студии но при запуске из Дженкинс получаю вот такое значение даты 05.10.2016 - тест конечно падает и не понятно было почему, пока я не добавила логирование теста и получила значение поля dataNow .
Теперь эта проблема решается вот таким образом

Class

 public static class Utils
    {
        public static string ToDateString(this DateTime dateOriginal)
        {
            return dateOriginal.ToString("MM/dd/yyyy").Replace('.', '/');
        }
    }

основной код

var dateNow = DateTime.Now.AddDays(2).ToDateString();

Очень непонятно, конечно, при чем тут дженкис вообще )

Потому что один и тот же код работает по разному в студии и в Дженкинсе и при просмотре лога видно что значения возвращаемые полем dataNow разные, вернее формат вывода даты

Подозреваю, что проблема в отсутствующем CultureInfo, а также использовании зарезервированного спец. символа. Пробуйте использовать InvariantCulture + экранировать /, либо оборачивать его в '.

DateTime.ToString("dd'/'MM'/'yyyy")

Детали обсуждения по первой ссылке в google:

2 лайка

Ну очевидно же, что проблема в коде, а не в дженкинсе ))

Да, точно надо была заэкранировать символы "/, попробовала и все заработало:)
Спасибо за информативный коментарий:)

Не забываем о встроенной функциональности пометок понравившихся комментариев и наиболее подходящего решения. :wink:

2 лайка