NSDate - 提取时间

发布于 2024-11-30 23:48:01 字数 782 浏览 1 评论 0原文

问题

我有一个时间戳,我正在将其转换为NSDate。现在我需要提取时间。我已成功提取时间,但唯一的问题是,如果分钟为 0,则显示“0”而不是“00”。因此 11:00 将显示为:“11:0”。其他一切正常,例如 11:30 正常。

代码

    NSDate *date = [NSDate dateWithTimeIntervalSince1970:[self.program.sd intValue]];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"HH:mm"];
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDateComponents *components = [calendar components:(kCFCalendarUnitHour | kCFCalendarUnitMinute) fromDate:date];
    NSInteger hour = [components hour];
    NSInteger minute = [components minute];
    NSLog(@"%d:%d", hour, minute);

有什么建议吗?我做错了什么?有没有比我上面所做的更好的方法来同时提取小时和分钟?

谢谢!

Problem

I have a timestamp that I am converting to an NSDate. Now I need to extract the time. I have successfully extracted the time but the only problem I have is that if the minutes are 0, it displays "0" instead of "00". So 11:00 would be shown as: "11:0". Everything else works, for example 11:30 works fine.

Code

    NSDate *date = [NSDate dateWithTimeIntervalSince1970:[self.program.sd intValue]];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"HH:mm"];
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDateComponents *components = [calendar components:(kCFCalendarUnitHour | kCFCalendarUnitMinute) fromDate:date];
    NSInteger hour = [components hour];
    NSInteger minute = [components minute];
    NSLog(@"%d:%d", hour, minute);

Any suggestions? What have I done wrong? Is there a better way to extract both the hour and the minute at the same time rather than what I've done above?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

十秒萌定你 2024-12-07 23:48:01

您是否恢复了正确的价值观?如果您所做的只是向用户显示时间,则应使用 NSDateFormatter 从日期对象创建字符串。

NSDateFormatter *formatter = [[NSDateFormatter new] autorelease];
[formatter setDateFormat:@"hh:mm"];
NSString *timeString = [formatter stringFromDate:date];

格式字符串的可能性记录在 UTS #35:区域设置数据标记语言 附录 F:日期格式模式

Are you getting the right values back? If all you're doing is displaying the time to the user, you should use NSDateFormatter to create a string from the date object.

NSDateFormatter *formatter = [[NSDateFormatter new] autorelease];
[formatter setDateFormat:@"hh:mm"];
NSString *timeString = [formatter stringFromDate:date];

Possibilities for format strings are documented in UTS #35: Locale Data Markup Language Appendix F: Date Format Patterns.

灼疼热情 2024-12-07 23:48:01

您应该指定要用零填充:

NSLog(@"%02d:%02d", hour, minute);

You should specify that you want to pad with zeroes:

NSLog(@"%02d:%02d", hour, minute);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文