it-swarm.dev

تحويل DateTime إلى TimeSpan

أريد تحويل مثيل DateTime إلى مثيل TimeSpan ، هل هذا ممكن؟

لقد نظرت حولي ولكني لم أجد ما أريد ، لكنني أجد فرق التوقيت فقط. وبشكل أكثر تحديدًا ، أريد تحويل مثيل DateTime إلى مللي ثانية ، ثم حفظه في IsolatedStorage.

54
Ayoub.A

لتحويل DateTime إلى TimeSpan ، يجب عليك اختيار تاريخ/وقت الأساس - على سبيل المثال منتصف ليل 1 كانون الثاني (يناير) 2000 ، وقم بطرحها من قيمة DateTime (وأضفها عندما تريد التحويل مرة أخرى إلى DateTime).

إذا كنت ترغب ببساطة في تحويل DateTime إلى رقم ، فيمكنك استخدام الخاصية Ticks .

14
MiMo

يمكنك فقط استخدام خاصية TimeOfDay لوقت التاريخ ، وهو نوع TimeSpan:

DateTime.TimeOfDay

هذه الخاصية موجودة منذ. NET 1.1

مزيد من المعلومات: http://msdn.Microsoft.com/en-us/library/system.datetime.timeofday(v=vs.110).aspx

168
user170442
TimeSpan.FromTicks(DateTime.Now.Ticks)
16
KoalaBear

جرب الكود التالي.

 TimeSpan CurrentTime = DateTime.Now.TimeOfDay;

الحصول على الوقت من اليوم وتعيينه إلى متغير TimeSpan.

4
Muhammad Awais

في حال كنت تستخدم 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 () بحيث يأخذ أيضًا "أيام" في الاعتبار أو يفعل شيئًا مثل dateTime.Substract(DateTime.MinValue).TotalMilliseconds.

4
NoOne