繁体   English   中英

从 NSDate 中提取日期和小时 - 目标 C

[英]Extract Date and Hour from NSDate - Objective C

我有这种格式的dateString "mm/dd/yyyy '-' HH:mm" 我想提取字符串中的日期和字符串中的小时。 我尝试了以下代码,但这返回了错误的日期:

- (void) extractDate: (NSString *)dateString intoHour: (NSString *)hourLabel and: (NSString*)dateLabel {
    NSDateFormatter *formatter=[[NSDateFormatter alloc]init];
    [formatter setDateFormat:@"mm/dd/yyyy '-' HH:mm"];
    NSData *date = [formatter dateFromString:dateString];

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

    hourLabel = [NSString stringWithFormat:@"%lu:%lu", [components hour], [components minute]];
    dateLabel = [NSString stringWithFormat:@"%lu/%lu/%lu", [components day], [components month], [components year]];
}

示例字符串: "05/01/2015 - 11:15"

结果: date: 1/1/2015 , time: 11:15以及如何保持这种日期格式dd/mm/yyyy ,我的意思是当一天是1 ,它显示01

未测试,但:

MM当月。 不是mm ,它是分钟。

你已经有了一个NSDateFormatter那么为什么不再次使用它来代替NSDateComponentsNSString格式呢?

NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"MM/dd/yyyy '-' HH:mm"];
NSDate *date = [formatter dateFromString:dateString];

//Now you have the correct date. So we'll use the NSDateFormatter to transform NSDate (date) into NSString according to the format we need.

[formatter setDateFormat:@"MM/dd/yyyy"];
dateLabel = [formatter stringFromDate:date];
[formatter setDateFormat:@"HH:mm"];
hourLabel = [formatter stringFromDate:date];

hourLabel / dateLabel作为NSString而不是UILabel是一个非常具有误导性的 var 命名。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM