This overload of TryParse
uses current culture (CultureInfo.CurrentCulture
), so culture is different between your dev machine (windows) and your linux machine. For example:
CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo("en");
DateTimeOffset parsedDate;
bool res = DateTimeOffset.TryParse("29.10.2020", out parsedDate);
Console.WriteLine(res); // false
CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo("ru");
res = DateTimeOffset.TryParse("29.10.2020", out parsedDate);
Console.WriteLine(res); // true
So you need to use overload which accepts IFormatProvider
and pass provider there which makes sense for the format in which you store your dates. For example:
var cultureOfMyDates = CultureInfo.GetCultureInfo("ru");
res = DateTimeOffset.TryParse("29.10.2020", cultureOfMyDates, DateTimeStyles.None, out parsedDate);
Or use TryParseExact
(your sample with DateTimeOffset.TryParseExact("29.10.2020", "dd.MM.yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out parsedDate)
works fine for me)