ios - NSDate 问题

标签 ios objective-c nsdate

我有一个格式为 2018-01-19 18:30:00 +0000 的 NSDate 对象。现在我只想更改时间组件。更改时间组件后,NSDate 对象将变为 2018-01-19 10:00:00。我确实尝试了各种解决方案,但没有任何效果。如果有人对此问题有任何解决方案,请提供帮助。提前谢谢你

NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components: NSCalendarUnitYear| NSCalendarUnitMonth| NSCalendarUnitDay fromDate:date];

[components setHour:hour];
[components setMinute:minute];
[components setSecond:second];
NSDate *newDate = [calendar dateFromComponents:components];

我尝试的另一种解决方案是

  NSDate *oldDate = date; 
  unsigned unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth |  NSCalendarUnitDay;
  NSCalendar *calendar = [NSCalendar currentCalendar];
  NSDateComponents *comps = [calendar components:unitFlags fromDate:oldDate];
  comps.hour   = 10;   
  comps.minute = 00;
  comps.second = 00;
  NSDate *newDate = [calendar dateFromComponents:comps];

每次我得到的输出都是输入日期的下一个日期

最佳答案

您可以在创建新的 NSDate 对象时更改时间组件:

NSDate *date = [calendar dateBySettingHour:10 minute:0 second:0 ofDate:[NSDate date] options:0];

答案来自:https://stackoverflow.com/a/5611700/4535184


关于ios - NSDate 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42551321/

相关文章:

ios - secondsFromGMT 在设备和模拟器上返回不同的值

iphone - 使用 SocialFramework 登录 Facebook

ios - XcCode5 : How do relationships work with interface builder?

objective-c - 未安装 FinderSync 附件

ios - Segue - 索引 0 超出空数组的范围

ios - 如何获得两个日期之间的天数 objective-c

cocoa - 如何获得该月下周第一天的 NSDate

ios - 轻按时更改UIButton的图像

ios - 如何在不使用 Storyboard segues 的情况下添加动画链式过渡系统?

objective-c - iPhone 应用程序的设置包