gpt4 book ai didi

ios - NSDate 到 TimeStamp 的转换和 NSDate 比较

转载 作者:行者123 更新时间:2023-11-29 02:48:03 26 4
gpt4 key购买 nike

我对将 NSTimeInterval 转换为 NSDate 感到困惑,我有两个日期要比较,一个来自服务器,另一个在本地,

在服务器案例中,我以时间间隔格式获取日期,因此我也必须对本地数据执行相同的操作。

我将在 2014 年 7 月 3 日进行测试,

服务器时间间隔:1404360000

同一日期的本地时间间隔:1404412200

我是这样转换的,

//converting NSString to NSDate and then to NSTimeInterval
NSLog(@"Local Time Stamp:%.f",[[self dateFromString:@"03-07-2014"] timeIntervalSince1970]);

//Server time stamp
NSLog(@"Server Time Stamp:1404360000");

//converting to NSDate from NSTimeInterval (for local)
NSLog(@"%@",[self converToDateFromString:[NSString stringWithFormat:@"%.f",[[self dateFromString:@"03-07-2014"] timeIntervalSince1970]]]);

//converting to NSDate from NSTimeInterval (for server)
NSLog(@"%@",[self converToDateFromString:@"1404360000"]);

输出,

2014-07-21 17:26:50.964 MyApp[998:90b] Local Time Stamp:1404325800
2014-07-21 17:26:52.633 MyApp[998:90b] Server Time Stamp:1404360000
2014-07-21 17:26:58.130 MyApp[998:90b] Local Time Stamp To Date:2014-07-02 18:30:00 +0000
2014-07-21 17:26:59.880 MyApp[998:90b] Server Time Stamp To Date:2014-07-03 04:00:00 +0000

看到日期相同,但时间不同。可能是因为时区?

if([localDate isEqualToDate:serverDate]) {
NSLog(@"Matched!");
}else{
NSLog(@"Unmatched!");
}

总是不匹配!

有什么比较建议吗?另外,为什么服务器时间间隔和本地时间间隔不同?我认为因此我无法比较日期。

请注意,我使用以下方法将时间戳转换为日期,将字符串转换为日期。如上面代码中所用。

- (NSDate *)dateFromString:(NSString *)dateString {
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setTimeZone: [NSTimeZone timeZoneWithAbbreviation:[[NSTimeZone localTimeZone] abbreviation]]];
[df setDateFormat:@"dd-MM-yyyy"];
return [df dateFromString:dateString];
}

-(NSDate *)converToDateFromString:(NSString *)str
{
NSDate *date = [NSDate dateWithTimeIntervalSince1970:[str integerValue]];
return date;
}

最佳答案

您必须使用 gmt 格式转换两个日期:

  [df setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];
[df setDateFormat:@"dd-MM-yyyy"];

然后比较日期字符串

我正在使时区缩写更动态地适应用户在设置中的指定,

所以 [df setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]]; 应该替换成这个,

[df setTimeZone: [NSTimeZone timeZoneWithAbbreviation:[[NSTimeZone localTimeZone] abbreviation]]];

关于ios - NSDate 到 TimeStamp 的转换和 NSDate 比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24864853/

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