سؤال

أتوقع 2010-10-11 00:00:00

لكن بدلاً من ذلك أتلقى 2010-10-10 21:00:00 +0000

أعلم أنه يمكنني إضافة بضع ساعات وتلقي التاريخ المطلوب ، لكنني لا أفهم لماذا أحصل على اليوم السابق مع 21 ساعة ...

من فضلك ، مساعدة!

NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setYear:2010];
[comps setMonth:10];
[comps setDay:11];

[comps setHour:0];
[comps setMinute:0];
[comps setSecond:0];

NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *retDate = [cal dateFromComponents:comps];
هل كانت مفيدة؟

المحلول

أعتقد أن مشكلتك قد يتم حلها عن طريق تعيين NSTimeZone.

نصائح أخرى

إذا كنت بحاجة إلى تنسيق وقت محدد ، فاستخدم هذا التنسيق أو اكتب هذا للحصول على الوقت الصحيح. الخيار الأول...

let formatter = NSDateFormatter()
    formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
    let localDate = formatter.dateFromString("1989-10-17T05:00:00.000-0000")

أو إذا كنت بحاجة إلى تاريخ من المكونات ، فاستخدم الرمز أدناه مثل ...

let calendar = NSCalendar.currentCalendar()
    calendar.timeZone = NSTimeZone(name: "GMT")!
    let date = calendar.dateFromComponents(components)

أو تحتاج

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top