gpt4 book ai didi

ios - 如何获取用户的生日并将其转换回 NSTimeInterval?

转载 作者:行者123 更新时间:2023-11-28 21:40:21 25 4
gpt4 key购买 nike

假设我的生日是 (mon/day/year) 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 这样的网站上检查它时它给了我错误的日期。

最佳答案

NSTimeInterval timeInterval = date.timeIntervalSinceReferenceDate;
NSDate *anotherDate = [NSDate dateWithTimeIntervalSinceReferenceDate: timeInterval];

试试下面的代码。 dateanotherDate 将相同。

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];

您可以从上面的代码 (-1188000000) 中复制 timeInterval 并将其粘贴到网站上,它会给您一个正确的日期。

在内部,NSDate 存储相对于引用日期(2001 年 1 月 1 日)的时间间隔。你提到的网站是相对于1970年1月1日的UNIX时间戳。

关于ios - 如何获取用户的生日并将其转换回 NSTimeInterval?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32398053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com