Maison > Questions et réponses > le corps du texte
黄舟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;
Il s'agit d'obtenir 23 :59 minutes dans le fuseau horaire de Pékin du jour. Modifiez simplement l'heure que vous souhaitez obtenir. Pour l'horodatage, changez simplement le fuseau horaire en fuseau horaire zéro. Cela peut-il résoudre votre problème ?
天蓬老师2017-04-17 18:00:14
Bonjour, la méthode que vous avez mentionnée ne peut pas obtenir la date de 23h59 dans le fuseau horaire de Pékin du jour. Bien que vous ayez défini le fuseau horaire et réglé les heures et les minutes, vous ne pouvez toujours pas obtenir la date de 0 : 00 et 23h59 du jour. Date et heure des minutes, s'il y a un problème avec ma propre utilisation de votre code, veuillez le signaler, merci
La méthode que j'ai trouvée plus tard est la suivante : sans régler le fuseau horaire, réglez directement l'heure sur 8 heures, pour pouvoir obtenir
// 创建日历
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);
Bonjour, votre méthode est correcte. Ce que j'ai dit n'affiche que l'heure correcte actuelle. Après l'avoir convertie en horodatage, elle n'est en fait pas correcte.