Я хочу преобразовать a DateTime
экземпляр в a TimeSpan
экземпляр, действительно ли это возможно?
Я озирался, но я не мог найти то, что я хочу, я только нахожу разницу во времени. Строго говоря, я хочу преобразовать a DateTime
экземпляр в миллисекунды, чтобы затем сохранить его в IsolatedStorage.
Для преобразования DateTime
в TimeSpan
, необходимо выбрать основную дату/время - например, полночь от 1-го января 2000, и вычесть ее из Вашего DateTime
значение (и добавить его, когда Вы хотите преобразовать назад в DateTime
).
, Если Вы просто хотите преобразовать DateTime
в число, можно использовать Ticks
свойство.
Можно просто использовать свойство TimeOfDay времени даты, которое является типом TimeSpan:
DateTime.TimeOfDay
Это свойство было вокруг начиная с.NET 1.1
[еще 114] информация: http://msdn.microsoft.com/en-us/library/system.datetime.timeofday (v=vs.110) .aspx
Попробуйте следующий код.
TimeSpan CurrentTime = DateTime.Now.TimeOfDay;
Получают время суток и присваивают его TimeSpan
переменная.
В случае, если Вы используете WPF и TimePicker Xceed (который, кажется, использует 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 () так, чтобы также потребовались 'дни' во внимание, или сделайте sth как dateTime.Substract(DateTime.MinValue).TotalMilliseconds
.