将日期(934146000000 + 0300)转换为NSString

时间:2014-01-02 14:59:02

标签: objective-c nsstring nsdate

我通过解析xml来获得生日。在

-(void)parser:(NSXMLParser*)parser didEndElement

方法,我将<birthday></birthday>元素的值转换为NSDate,但它返回/ Date(934146000000 + 0300)/:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd-MM-yyyy"];
NSDate *dateFromString = [[NSDate alloc] init];
dateFromString = [dateFormatter dateFromString:currentStringValue];

如何将其转换为NSDate才能转换为NSString?

2 个答案:

答案 0 :(得分:0)

看起来你正在从长变量中检索值。

目前指的是周一,11月29日31571 00:00:00 GMT

如果从末尾删除三个0,那就有意义了......

934146000 = Sun,1999年8月8日21:00:00 GMT

您还需要修复格式。格式dd-MM-yyyy将无法理解934146000。

你可以做点像......

CGFloat dateValue = 934146000;

NSDate *theDate = [NSDate dateWithTimeIntervalSince1970:dateValue];

这应该得到正确的日期。

但就像我说的那样,你需要先梳理出你得到的价值。

答案 1 :(得分:0)

似乎你从Java或C#获得的值是以毫秒为单位的当前时间。 在Objective C中,NSDate期望时间为秒,而不是毫秒。所以你必须把它除以1000。

NSDate * dateOfBirth = [NSDate dateWithTimeIntervalSince1970:[recvDate floatValue]/1000.0];

您可以使用类似下面的内容,但仍需要修正毫秒到秒值。

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    formatter.dateFormat = @"EEE, dd MMM yyyy HH:mm:ss ZZZ";
    NSDate * date = [formatter dateFromString:str];