Удалить часы: секунды: миллисекунды в объекте DateTime
Я пытаюсь создать строку из объекта DateTime, которая дает формат mm:dd:yyyy
.
Обычно объект DateTime
имеет значение mm:dd:yyyy hrs:min:sec AM/PM
.
Есть ли способ быстро удалить часть hrs:min:sec AM/PM
DateTime, чтобы при преобразовании ToString()
это приведет только к mm:dd:yyyy
?
Ответы
Ответ 1
Чтобы ответить на ваш вопрос, нет - вам придется хранить его другим типом. Самый простой выбор - использовать строку.
string date = dateTime.ToString("MM:dd:yyyy");
Однако я также настоятельно рекомендую не хранить даты внутри вашей программы в виде строк. Это затруднит выполнение каких-либо расчетов или сравнений с ними. Кроме того, я бы посоветовал вам не форсировать определенную культуру для вашего представления даты, поскольку это означает, что ваше приложение, вероятно, не будет работать так, как ожидалось, в других культурах, чем ваше.
Несколько более сложный подход заключается в создании пользовательского класса, который переопределяет ToString. Я бы тоже избегал этого, потому что по-прежнему будет сложно использовать ваш тип со стандартными библиотечными функциями. Вам придется конвертировать туда и обратно все время.
Просто оставьте это как DateTime и сделайте преобразование в строку только на уровне презентации. Вы можете использовать DateTime.ToShortDateString
для печати удобной для пользователя строки, соответствующей культуре.
Ответ 2
datetime DateWithTimeNoSeconds =
DateTime.Now.Date.AddHours(DateTime.Now.Hour).AddMinutes(DateTime.Now.Minute);
Получает текущую дату и дату и добавляет часы и минуты.
Ответ 3
Обычно я использую DateTime.ToShortDateString() для преобразования в стиле Culture
-aware в строку.
Таким образом, вы можете отформатировать его до даты только с учетом текущего форматирования культуры, установленной для текущего потока.
Ответ 4
DateTime date1 = new DateTime(2008, 6, 1, 7, 47, 0);
Console.WriteLine(date1.ToString());
// Get date-only portion of date, without its time.
DateTime dateOnly = date1.Date;
// Display date using short date string.
Console.WriteLine(dateOnly.ToString("d"));
// Display date using 24-hour clock.
Console.WriteLine(dateOnly.ToString("g"));
Console.WriteLine(dateOnly.ToString("MM/dd/yyyy HH:mm"));
// The example displays the following output to the console:
// 6/1/2008 7:47:00 AM
// 6/1/2008
// 6/1/2008 12:00 AM
// 06/01/2008 00:00
http://msdn.microsoft.com/en-us/library/system.datetime.date.aspx
Ответ 5
В то время как в большинстве случаев я согласен с Марком Байерсом, у меня была ситуация, когда мне нужно было хранить дату, которое было только когда-либо зернистым до часа. Хранение минут и секунд было бы не только лишним, но и неточным. Пользователь просто выбрал дату и час, поэтому, когда дата и час будут выбраны пользователем, минуты и секунды будут установлены на любое текущее время.
Удаление минут и секунд в этом случае очень просто. Вот код:
scheduledDate = scheduledDate.AddMinutes(
scheduledDate.Minute * -1).AddSeconds(
scheduledDate.Second * -1);
Затем я храню его в БД как полное время, с минут и секунд всегда 0.
Ответ 6
О DateTime.AddMinutes
(или секундах или часах), если вы хотите УДАЛИТЬ вместо добавления только добавить отрицательное число!
Ответ 7
Простой способ, возможно, не самый лучший, но
DateTime dt = new DateTime();
dt = DateTime.Now;
string sdate = dt.ToShortDateString();
dt = DateTime.Parse(sdate);
Или для краткости
DateTime DateTimeWithOut_HoursMinutesSecondsEct = DateTime.Parse(DateTime.Now.ToShortDateString());
Ответ 8
Что-то вроде этого для даты и времени без секунд:
private DateTime _startTime;
public DateTime StartTime
{
get { return _startTime; }
set
{
_startTime = value.AddSeconds(-value.Second)
.AddMilliseconds(-value.Millisecond);
}
}