在ios中将日期转换为毫秒

时间:2013-12-09 15:10:49

标签: ios objective-c nstimeinterval nstimezone

您正在使用以下内容将日期转换为目标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 + ..."

2 个答案:

答案 0 :(得分:0)

问题是您的strDate未被dateFromString:解析。结果是,dateniltimeInternvalSince1970将对nil进行一些默认处理。您可以通过添加以下内容来确认:

NSAssert (nil != date);
初始化date

。断言将失败。

解决方案是您需要一个更好的formatter - 一个与传入strDate的格式一致。

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

答案 1 :(得分:0)

您没有在NSDateFormatter中添加小时,分钟和秒,就像这样

[formatter setDateFormat:@“yyyy / MM / dd HH:mm:ss ZZZ”];