假设,我的生日是(周一/日/年)10-05-1932(作为NSDate
),如何将其转换为NSTimeInterval
。
再次,如何将NSTimeInterval
转换回NSDate
?
我尝试使用NSDate
的不同方法但尚未成功。
我在做什么?
NSString *strdate = @"10-05-1932";
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"MM-dd-yyyy"];
NSDate *date = [df dateFromString:strdate];
NSLog(@"%.f", -[date timeIntervalSinceNow]);
这会记录2616605071
(截至2015年9月4日16:21) - 当我使用this这样的网站查看时,它给了我错误的日期。
答案 0 :(得分:2)
NSTimeInterval timeInterval = date.timeIntervalSinceReferenceDate;
NSDate *anotherDate = [NSDate dateWithTimeIntervalSinceReferenceDate: timeInterval];
尝试以下代码。 date
和anotherDate
将完全相同。
NSCalendar *calendar = [NSCalendar currentCalendar];
calendar.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];
NSDateComponents *components = [[NSDateComponents alloc] init];
[components setDay:10];
[components setMonth:5];
[components setYear:1934];
NSDate *date = [calendar dateFromComponents:components];
NSLog(@"%@", date);
NSTimeInterval timeInterval = [date timeIntervalSinceReferenceDate];
NSDate *anotherDate = [NSDate dateWithTimeIntervalSinceReferenceDate:timeInterval];
NSLog(@"%@", anotherDate);
它不正确,因为您从该网站获得使用UNIX时间戳的时间戳(时间间隔)。此外,它不正确,因为您使用timeIntervalSinceNow
,这可能会在您每次调用方法时发生变化,因为它相对于当前时间。如果您想要与该网站兼容的日期/时间间隔。使用:
NSTimeInterval timeInterval = date.timeIntervalSince1970;
NSDate *anotherDate = [NSDate dateWithTimeIntervalSince1970:timeInterval];
您可以复制上面代码中的timeInterval
(-1188000000)并将其粘贴到网站上,它会为您提供正确的日期。
在内部,NSDate
存储相对于参考日期的时间间隔(2001年1月1日)。您提到的网站是相对于1970年1月1日的UNIX时间戳。
答案 1 :(得分:0)
这只是工作!
SetWindowActivationScope( window, kWindowActivationScopeIndependent );
感谢@sikhapol