Принимая значение DateTime и принимая только время и наоборот - PullRequest
4 голосов
/ 02 апреля 2012

В настоящее время я разрабатываю приложение для работы в качестве списка задач, и мне было интересно, как я могу принять значение из поля даты и времени, но использовать только значение даты или значение времени.В настоящее время я делаю это так.

DateTime ted = appointmentDateTimeDate.Value; //The date
DateTime at = appointmentDateTimeTime.Value;  //The time

Должен ли я делать это по-другому?

Ответы [ 4 ]

5 голосов
/ 02 апреля 2012

Используйте DateTime.Date свойство для даты и DateTime.TimeOfDay для времени:

DateTime ted = appointmentDateTimeDate.Date; //The date
TimeSpan at = appointmentDateTimeTime.TimeOfDay;  //The time
1 голос
/ 02 апреля 2012

BCL не очень хорошо разделяет дату и время.

Если вы счастливы получить новую внешнюю зависимость, я бы хотел подключить мою библиотеку Noda Time , которая позволит вам четко разделить вещи на LocalDate и LocalTime. Чтобы выполнить преобразование из средства выбора даты / времени, вы, вероятно, будете использовать:

var dateAndTime = LocalDateTime.FromDateTime(appointmentDateTimeDate.Value);
LocalDate date = dateAndTime.LocalDate;
LocalTime time = dateAndTime.LocalTime;
0 голосов
/ 02 апреля 2012

Как и другие отмечали, DateTime всегда имеет и дату, и компонент времени.Поэтому, хотя можно сохранить оба независимо, используя два DateTime, в большинстве случаев рекомендуется сохранять оба вместе в одном экземпляре DateTime.

Вы должны увидеть, действительно ли вам нужно разделить оба значения или еслиприложение может объединять оба в одно свойство, что облегчит работу.

0 голосов
/ 02 апреля 2012

Значение DateTime ВСЕГДА содержит дату и время, независимо от того, используете вы оба или нет.

Вы можете использовать свойство. Date для DateTime, чтобы получить только дату».у него все еще будет значение времени, но значение времени будет полночь.Вы также можете использовать свойство. TimeOfDay , чтобы получить часть времени, которая будет TimeSpan , указывающей количество тиков с полуночи.

Я беруПрыгните сюда и предположите, что вы пытаетесь установить дату с одним элементом управления, а время с другим в пользовательском интерфейсе.Вот пример кода, который мы используем для этого, используя Ajax CalendarExtender, прикрепленный к текстовому полю, и пользовательский элемент управления TimePicker .

    DateTime dt;
    try
    {
        dt = Convert.ToDateTime(txtViewDate.Text).AddHours(txtViewTime.Hour).AddMinutes(txtViewTime.Minute);
        if (txtViewTime.AmPm == MKB.TimePicker.TimeSelector.AmPmSpec.PM)
        {
            dt = dt.AddHours(12);
        }
        System.Diagnostics.Debug.WriteLine(dt.ToString());

    }
    catch (Exception)
    {
        // abort processing
        return;
    }  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...