Ответ 1
Вы хотите оставить его как DateTime
, пока не будете готовы преобразовать его в строку.
DateTime.Now.AddDays(7).ToString("dd.MM.yy");
У меня есть что-то вроде этого DateTime.Now.ToString("dd.MM.yy");
В моем коде, и мне нужно добавить 1 неделю к нему, например 5.4.2012
, чтобы стать 12.4.2012
. Я попытался преобразовать его в int и затем добавить его, но есть проблема, когда это до 30.
Можете ли вы сказать мне какой-нибудь умный способ, как это сделать?
Вы хотите оставить его как DateTime
, пока не будете готовы преобразовать его в строку.
DateTime.Now.AddDays(7).ToString("dd.MM.yy");
Во-первых, всегда сохраняйте данные в собственном типе, пока вы не будете готовы либо отобразить их, либо сериализовать (например, в JSON или сохранить в файл). Вы не конвертируете две переменные типа int
в строки перед их добавлением или умножением, поэтому не делайте этого и с датами.
Пребывание в нативном типе имеет несколько преимуществ, таких как внутреннее хранение DateTime
виде 8 байтов, что меньше, чем у большинства форматов строк. Но самое большое преимущество заключается в том, что .NET Framework предоставляет вам множество встроенных методов для выполнения вычислений даты и времени, а также для анализа значений даты и времени из исходной строки. Полный список можно найти здесь.
Таким образом, ваш ответ становится:
DateTime.Now
. Используйте DateTime.Now.Date
если вы предпочитаете использовать полночь, а не текущее время.AddDays(7)
чтобы вычислить одну неделю спустя. Обратите внимание, что этот метод автоматически учитывает перенос на следующий месяц или год, если это применимо. Для вас также учитываются високосные дни.// Current local server time + 7 days
DateTime.Now.AddDays(7).ToString("dd.MM.yy");
// Midnight + 7 days
DateTime.Now.Date.AddDays(7).ToString("dd.MM.yy");
И есть много других методов в рамках, чтобы помочь с:
TimeSpan
для работы с временными интерваламиПо какой-либо причине вы не можете использовать метод AddDays, как в
DateTime.Now.AddDays(7)