【问题标题】:Converting Date to milli seconds in ios在ios中将日期转换为毫秒
【发布时间】:2013-12-09 15:10:48
【问题描述】:

您好,我正在使用以下将目标 C 中的日期转换为字符串。

-(void)convertDateToJsonString:(NSString *)strDate
{


    NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
    [formatter setTimeZone:[NSTimeZone systemTimeZone]];
    [formatter setLocale:[NSLocale systemLocale]];
    [formatter setDateFormat:@"yyyy/MM/dd"];


    NSDate * date =[formatter dateFromString:strDate];

    long long milliseconds = (long long)([date timeIntervalSince1970] * 1000.0);

    NSLog(@"After conversion %lli",milliseconds);



}

它的给出日期但总是得到时间是 00:00:00 不是当前时间。如何以毫秒为单位获取当前时间的选定日期。

但它适用于当前日期,如下所示

 long long millisecs = (long long)([[NSDate date] timeIntervalSince1970] * 1000.0);

    NSLog(@"After conversion %lli",millisecs);

我正在从日期选择器获取日期并进行转换。

还有什么方法可以在 ios 中获得像 +530 这样的准确时区? 我知道[NSTimezone Systemzone],但它赋予了整个价值,例如“Asia/kolkatta +...”

【问题讨论】:

  • 如果初始字符串日期没有任何小时或分钟。 dateFromString 怎么可能猜到?
  • 所以我也必须从字符串中获取时间,然后才能得到毫秒,对吗? @Larme
  • 你没有向我们展示你是如何显示时间的,所以我们所说的任何东西都是一个猜想,除了观察到如果你只解析日期而不是时间,那么你就不会神奇地从某处。
  • "正在从日期选择器获取日期并进行转换。"如果您从日期选择器获取源日期,为什么不将其保留为 NSDate,而不是转换为字符串并返回?
  • 要获得所需格式的时区,只需在用于将 NSDate 转换为字符串日期的日期格式化程序的日期格式字符串中使用“Z”。

标签: ios objective-c nstimeinterval nstimezone


【解决方案1】:

问题是您的strDate 没有被dateFromString: 解析。结果是您的date 将是nil 并且timeInternvalSince1970 将对nil 进行一些默认处理。您可以通过添加来确认这一点:

NSAssert (nil != date);

在您初始化date 之后。断言将失败。

解决办法是你需要一个更好的formatter——一个和传入的strDate的格式一致。

但是,也许你有一个更根本的问题。 UIDatePicker date 属性直接返回 NSDate 对象。你从哪里得到你的strDate

【讨论】:

  • 嗨 @GoZoner 我得到的日期是正确的,只是问题是时间总是 00:00:00+5:30 am getting.Thanks for your replyfriend
  • 好的。为什么使用strDate 作为NSString 而不是直接从NSDatePicker 使用date 属性获取NSDate
【解决方案2】:

你还没有像这样在 NSDateFormatter 中添加小时、分钟和秒

[格式化程序setDateFormat:@"yyyy/MM/dd HH:mm:ss ZZZ"];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多