Я пытаюсь сделать короткую дату, но в результате получаю еще один день. С датой вроде «2014-01-03 00:00:00» ее хорошо, но она терпит неудачу, когда время «23:59:59».C# создание короткой даты заканчивается добавлением одного дня
EntryDate = "2014-01-03 23:59:59"
но получить результат = "2014-01-04"
try
{
DateTime exact = DateTime.ParseExact(EntryDate, "yyyyMMdd", (IFormatProvider)CultureInfo.InvariantCulture);
mventryAttrib.Value = (exact.ToLocalTime().ToString("yyyy-MM-dd"));
}
catch (FormatException ex)
{
try
{
DateTime exact = DateTime.ParseExact(EntryDate, "yyyy-MM-dd HH:mm:ss", (IFormatProvider)CultureInfo.InvariantCulture);
mventryAttrib.Value = (exact.ToLocalTime().ToString("yyyy-MM-dd"));
}
catch
{
}
, что о добавлении .Date в конце вызова ParseExact (чтобы удалить компонент времени). Кроме того, будет ли ToLocalTime() не возиться с датой в любом случае в зависимости от часового пояса? – Warrick
Это из-за 'ToLocalTime'. Если вы находитесь в часовом поясе, который добавляет часы, тогда это будет отражать его в 2014-01-04. –
Почему вы переходите в местное время, если вас не волнует время? Это позволит настроить время, которое сделает его на следующий день, когда ваш часовой пояс будет впереди. Если вы просто преобразуете 'exact' в строку, то он даст вам правильную дату. –