Преобразование DateTime в TimeSpan
Я хочу преобразовать экземпляр DateTime
в экземпляр TimeSpan
, возможно ли это?
Я огляделся, но я не мог найти то, что хочу, я нахожу только разницу во времени. В частности, я хочу преобразовать экземпляр DateTime
в миллисекунды, а затем сохранить его в изолированном хранилище.
Ответы
Ответ 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
.