ios - 如何在 iOS 中获取本月的第一个日期?

标签 ios objective-c nsdate

<分区>

我尝试从 [NSDate new] 获取当前月份的第一个日期。我的问题是,我总是收到 2015/05/31 而不是 2015/06/01。我什至尝试将字符串 20150601 转换为 NSDate,但我仍然收到 2015/05/31

这是我的代码(第二个元素):

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
    [dateFormatter setDateFormat:@"yyyyMMdd"];
    [dateFormatter setTimeZone:[NSTimeZone localTimeZone]];
    currentMonth = [dateFormatter dateFromString:@"20150601"];

结果是:

(lldb) print currentMonth
(__NSDate *) $0 = 0x79e64820 2015-05-31 21:00:00 UTC

编辑:

好的,我明白我的错误 - 我没有正确检查我的操作结果。它们总是产生 UTC。 10x,用于回答和所有评论。下次我会更加小心。

最佳答案

NSDate *today = [NSDate date];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

NSDateComponents *components = [gregorian components:(NSEraCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit) fromDate:today];
components.day = 1;

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
NSTimeZone *zone = [NSTimeZone localTimeZone];
[formatter setTimeZone:zone];
[formatter setDateFormat:@"yyyyMMdd"];


NSDate *dayOneInCurrentMonth = [gregorian dateFromComponents:components];
NSString *currentMonth = [formatter stringFromDate:dayOneInCurrentMonth];
NSLog(@"%@",currentMonth);

输出

2015-06-08 14:07:30.924 NSDATEDemo[1943:39838] 20150601

关于ios - 如何在 iOS 中获取本月的第一个日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30704168/

相关文章:

iphone - 当我的应用程序处于后台时,只有当我触摸顶部通知横幅并且在我单击应用程序图标时不工作时才会处理推送通知

ios - 适用于 iOS 的 Paypal SDK

swift - 计算当前时间和旧时间 Swift 之间的时间

objective-c - Http 日期到 NSDate

swift 3 : Date vs NSDate?

ios - 无法识别的选择器发送到 UIButton 中的实例

objective-c - 如何在自定义 UITableView 中获取文本字段

ios - 通过 CircleCI faSTLane 部署无法在 iTunes Connect 上构建内部测试

iphone - 将 RSA key 导入 iPhone 钥匙串(keychain)?

ios - 使用 swift 在屏幕上拖动图像