2015-04-27 21 views
-2

我正在从UIDatePicker输入和我的输出是这种格式 3:24:00 AM但是当我试图将其转换回NSDate并从那里长期返回一个空值。为什么我的NSDate(只有时间部分)字符串格式无法转换为long?

我的代码:

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 val=[d timeIntervalSince1970]*1000; 
    NSLog(@"%ld",val); // printing 0 

我怎么解决这个问题呢?请帮我

IAM功能的NSDate

的部分时间预期较长值
+0

因为你的'D'值是零。 –

+0

那是错的吗? –

+0

那么,如果它不是零(由于上述代码没有显示的原因),那么你会得到“无法识别的选择器”,因为'timeIntervalSince1970'不是NSString的一种方法。 –

回答

0

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

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

这将帮助你转换dateString到NSDate的

+0

我试过这个然后得到错误的输出 –

+1

再次,搜索这个网站。有数百人认为他们错误的输出是因为他们不了解NSDate。 – gnasher729

0

您需要如下:

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

您需要将字符串转换为N SDate对象。一个简单的方法是使用NSDateFormatter对象。它提供了将字符串转换为NSDate对象的dateFromString方法。你这样做,不过,需要告诉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] 
+0

我已经尝试过,但得到错误的输出日期。让我再试一次 –

+0

你得到了什么输出? – BoilingLime

+0

此代码给我null –

相关问题