0

我有一个 2010-04-23 00:00:00 格式的当前 NSString ,然后我试图获取从当天过去的天数。但是,例如,当用户将语言环境更改为泰国时,我不确定如何处理。

这是一些代码。

NSString *start = @"2010-04-23 00:00:00";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
NSDate *date = [formatter dateFromString:start];

//Region Format Thailand
NSDate *today = [[NSDate alloc] init];
NSTimeInterval difference =  [today timeIntervalSinceDate:start];
int numberOfDays = difference / 86400;

处理这种情况的正确方法是什么,所以天数差异是准确的?

4

2 回答 2

0

日期很复杂。

如果您想要天、小时、分钟、秒的差异,这很容易:将所有内容转换为 NSDate,计算以秒为单位的差异,然后转换为天、小时、分钟、秒。

其他任何事情,您都需要首先定义您真正想要的结果。今天凌晨 1 点和晚上 11 点是同一天,但今天晚上 11 点和明天凌晨 1 点是不同的日子——即使在第一种情况下相差 22 小时,在第二种情况下只有两个小时。所以你必须定义你想要什么。您必须定义哪种情况需要“0 天”的结果,以及哪种情况需要“1 天”的结果。

如果您更改时区,有些日期会移动到不同的日期,有些则不会。

由你决定你想要什么结果。无论如何,我会将所有日期转换为相关时区,提取日期,然后计算天数差异。

于 2014-09-14T22:18:23.603 回答
-2

您需要将日期转换为纪元时间。
- (NSTimeInterval)timeIntervalSince1970

完成后,您可以使用以下代码查找以秒为单位的时间差并进行比较。


NSDate* date1 = [NSDate 日期];
NSDate* date2 = [NSDate 日期];
NSTimeInterval 秒 = [date1 timeIntervalSinceDate:date2];

if (secs < 0)
{
NSLog("less");
}
else if (secs > 0)
{
NSLog("greater");
}
else
{
NSLog(@"same");
返回 NSOrderedSame;
}

于 2014-09-14T21:56:15.533 回答