Подтвердить что ты не робот

Преобразование DateTime в TimeSpan

Я хочу преобразовать экземпляр DateTime в экземпляр TimeSpan, возможно ли это?

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

4b9b3361

Ответ 1

Чтобы преобразовать a DateTime в TimeSpan, вы должны выбрать базовую дату/время - например. полночь 1 января 2000 года и вычтите его из вашего значения DateTime (и добавьте его, когда вы хотите преобразовать обратно в DateTime).

Если вы просто хотите преобразовать DateTime в число, вы можете использовать свойство Ticks.

Ответ 2

Вы можете просто использовать свойство TimeOfDay времени даты, которое является типом TimeSpan:

DateTime.TimeOfDay

Это свойство существует с тех пор, как .NET 1.1

Дополнительная информация: http://msdn.microsoft.com/en-us/library/system.datetime.timeofday(v=vs.110).aspx

Ответ 3

TimeSpan.FromTicks(DateTime.Now.Ticks)

Ответ 4

Если вы используете WPF и Xceed TimePicker (который, кажется, использует DateTime?) в качестве сборщика времени, как я сейчас делаю, вы можете получить из них миллисекунды (или TimeSpan):

var milliseconds = DateTimeToTimeSpan(timePicker.Value).TotalMilliseconds;

    TimeSpan DateTimeToTimeSpan(DateTime? ts)
    {
        if (!ts.HasValue) return TimeSpan.Zero;
        else return new TimeSpan(0, ts.Value.Hour, ts.Value.Minute, ts.Value.Second, ts.Value.Millisecond);
    }

XAML:

<Xceed:TimePicker x:Name="timePicker" Format="Custom" FormatString="H'h 'm'm 's's'" />

Если нет, я думаю, вы могли бы просто настроить мой DateTimeToTimeSpan() так, чтобы он также учитывал "дни" или делал это как dateTime.Substract(DateTime.MinValue).TotalMilliseconds.

Ответ 5

Попробуйте использовать следующий код.

 TimeSpan CurrentTime = DateTime.Now.TimeOfDay;

Получите время суток и назначьте его переменной TimeSpan.