Rumah > Soal Jawab > teks badan
黄舟2017-04-17 18:00:14
NSCalendar *greCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSTimeZone *timeZone = [[NSTimeZone alloc] initWithName:@"Asia/Shanghai"];
[greCalendar setTimeZone: timeZone];
NSDateComponents *dateComponents = [greCalendar components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:[NSDate date]];
// 定义一个NSDateComponents对象,设置一个时间点
NSDateComponents *dateComponentsForDate = [[NSDateComponents alloc] init];
[dateComponentsForDate setDay:dateComponents.day];
[dateComponentsForDate setMonth:dateComponents.month];
[dateComponentsForDate setYear:dateComponents.year];
[dateComponentsForDate setHour:23];
[dateComponentsForDate setMinute:59];
NSDate *dateFromDateComponentsForDate = [greCalendar dateFromComponents:dateComponentsForDate];
return dateFromDateComponentsForDate;
Ini adalah untuk mendapatkan 23:59 minit dalam zon waktu Beijing pada hari itu. Cuma ubah suai masa yang anda ingin dapatkan untuk cap waktu, cuma tukar zon waktu kepada zon waktu sifar.
天蓬老师2017-04-17 18:00:14
Helo, kaedah yang anda nyatakan tidak boleh mendapatkan tarikh 23:59 dalam zon waktu Beijing pada hari tersebut Walaupun anda telah menetapkan zon waktu dan menetapkan jam dan minit, anda masih tidak boleh mendapatkan tarikh 0: 00 dan 23:59 hari tarikh dan masa, jika terdapat apa-apa yang salah dengan penggunaan kod anda sendiri, sila nyatakan, terima kasih
Kaedah yang saya temui kemudian ialah: tanpa menetapkan zon waktu, tetapkan terus jam kepada 8 jam, supaya anda boleh mendapatkan
// 创建日历
NSCalendar *calendar = [NSCalendar currentCalendar];
// 初始化日历组件
NSDateComponents *dateComponents = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:[NSDate date]];
[dateComponents setYear:dateComponents.year];
[dateComponents setMonth:dateComponents.month];
[dateComponents setDay:dateComponents.day];
[dateComponents setHour:8]; // 设置为为8 时
NSDate *timeDate = [calendar dateFromComponents:dateComponents];
// 从0 点开始24 小时之后的时间
NSDate *end = [timeDate dateByAddingTimeInterval:24 * 3600];
WZLog(@"获取的时间为 = %@", timeDate);
Helo, kaedah anda betul. Apa yang saya katakan hanya menunjukkan masa semasa yang betul Selepas menukarnya kepada cap waktu, ia sebenarnya tidak betul