为什么我的NSDate(仅限时间部分)字符串格式无法转换为long?

时间:2015-04-27 12:11:44

标签: ios objective-c nsdate uidatepicker

我从UIDatePicker获取输入,我的输出采用这种格式 3:24:00 AM 但是当我尝试将其转换回NSDate时,从那里返回一个空值。

我的代码:

    NSDate* sourceDate = self.timePicker.date;

    NSString *dateString = [NSDateFormatter localizedStringFromDate:sourceDate
                                                          dateStyle:NSDateFormatterNoneStyle
                                                          timeStyle:NSDateFormatterMediumStyle];
    NSLog(@"%@",dateString);   //3:25:00 AM  string value

将dateString转换为NSDate

    NSDate *dateVal=(NSDate *)dateString;
    NSLog(@"%@", dateVal); // printing null in console

将dateVal转换为long

    long val=[d timeIntervalSince1970]*1000;
    NSLog(@"%ld",val); // printing 0

我该如何解决这个问题?请帮帮我

我希望NSDate的时间部分有很长的值

2 个答案:

答案 0 :(得分:0)

//将字符串转换为日期对象

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyyMMdd"];
NSDate *date = [dateFormat dateFromString:dateStr];  

这将帮助您将dateString转换为NSDate

答案 1 :(得分:0)

您需要以下内容:

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setLocale:[[NSLocale alloc] initWithLocaleIdentifier:NSLocaleIdentifier]];
[df setDateFormat:@"h:m:s a"];
NSDate *myDate = [df dateFromString:dateString];

您需要将字符串转换为NSDate对象。一种简单的方法是使用NSDateFormatter对象。它提供了dateFromString方法,该方法将字符串转换为NSDate对象。但是,您需要告诉NSDateFormatter日期的格式。

日期格式化程序参考:

 a           AM/PM
 A           millisecond of day
 c           day of week (c,cc,ccc,cccc)
 d           day of month
 e           day of week (e,EEE,EEEE)
 F           week of month
 g           julian day (since 1/1/4713 BC)
 G           era designator (G=GGG,GGGG)
 h           hour (1-12, zero padded)
 H           hour (0-23, zero padded)
 L           month of year (L,LL,LLL,LLLL)
 m           minute of hour (0-59, zero padded)
 M           month of year (M,MM,MMM,MMMM)
 Q           quarter of year (Q,QQ,QQQ,QQQQ)
 s           seconds of minute (0-59, zero padded)
 S           fraction of second
 u           zero padded year
 v           general timezone (v=vvv,vvvv)
 w           week of year (0-53, zero padded)
 y           year (y,yy,yyyy)
 z           specific timezone (z=zzz,zzzz)
 Z           timezone offset +0000

 sql         y-M-d H:m:s
 rss         [E, ]d MMM y[y] H:m:s Z|z[zzz]