【问题标题】:How to get day, month, year, hours, minutes, seconds from a UNIX timestamp in Objective C on Iphone如何从 Iphone 上 Objective C 中的 UNIX 时间戳获取日、月、年、小时、分钟、秒
【发布时间】:2011-04-14 01:04:45
【问题描述】:

我一直在网上浏览各种参考文档和示例,但我不知道如何获取 Objective 中给定时间戳的日期、月份、年份、小时、分钟C. 有什么想法吗?我为此目的使用的代码是这样的:

NSDate *date = [NSDate dateWithTimeIntervalSince1970:1286181000]; unsigned int compFlags = NSHourCalendarUnit | NSMinuteCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit; NSDateComponents *weekdayComponents = [[NSCalendar currentCalendar] 组件:compFlags fromDate:date]; NSLog(@"%d %d, %d:%d", [weekdayComponents day], [weekdayComponents month], [weekdayComponents hour], [weekdayComponents minute]); [发布日期]; [工作日组件发布];

虽然时间戳是 10 月的一天,但输出是 12 月 19 日。

【问题讨论】:

  • 顺便说一句:dateweekdayComponents 都不需要被释放。这可能会导致崩溃。
  • 我在粘贴后发现了这一点,因为它确实崩溃了,而且我更担心错误的日期而不是崩溃。 :D .再次感谢。

标签: iphone objective-c cocoa-touch date timestamp


【解决方案1】:
//  for age validation  (dynamic age in date picker for 18-100 year)

 NSDate *today = [NSDate date];
    NSDateComponents *dc_min = [[[NSDateComponents alloc] init] autorelease];
    [dc_min setYear:-100];
    NSCalendar *cal_min = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
    NSDate *pastDate_min = [cal_min dateByAddingComponents:dc_min toDate:today  options:0];
    [datePicker setMinimumDate:pastDate_min];


    NSDateComponents *dc_max = [[[NSDateComponents alloc] init] autorelease];
    [dc_max setYear:-18];
    NSCalendar *cal_max = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
    NSDate *pastDate_max = [cal_max dateByAddingComponents:dc_max toDate:today  options:0];

    [datePicker setMinimumDate:pastDate_min];
    [datePicker setMaximumDate:pastDate_max];


    [datePicker setDate:[datePicker maximumDate]];
    [datePicker addTarget:self action:@selector(dateChanged:) forControlEvents:UIControlEventValueChanged];

【讨论】:

    【解决方案2】:

    dateWithTimeIntervalSince1970: 的文档说:

    此方法对于创建 NSDate 来自 time_t 值的对象 由 BSD 系统函数返回。

    你能展示给你那个神奇数字1286181000的代码吗?即您是否使用time_t 值?

    【讨论】:

    • 该数字来自存储在数据库整数列中的值,而不是该数字实际上是代码中对该函数的调用,该函数返回一个 NSNumber 类型,该值就像魔术一样我粘贴的号码。无论如何我可以将它类型转换为 NSTimeInterval 或其他东西。这个周末我做了很多尝试,但一无所获,比如:NSTimeInterval t = (long)[db getColumn:@"timestamp"]。那么有什么想法吗?
    • 所以我让它工作了,比如: NSTimeInterval t = [[db getColumn:@"timestamp"] doubleValue];然后稍后在制作 NSDate 时使用 NSTimeInterval。 db 类对象返回了一个 NSNumber 引用,因此出现了这种情况。谢谢。
    • @kumar 很高兴你成功了。如果您发现此答案有帮助,请随时将其标记为“已回答”并给予支持。
    猜你喜欢
    • 1970-01-01
    • 2014-04-30
    • 2021-06-06
    • 2012-03-17
    • 2020-05-20
    • 1970-01-01
    • 2015-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多