我有一个当前的NSString,格式为2010-04-23 00:00:00,然后我试图获取当天的天数。但是,我不确定如何在用户将其语言环境更改为泰国时进行处理。
以下是一些代码。
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;
处理这种情况的正确方法是什么,所以天数的差异是准确的?
答案 0 :(得分:0)
日期很复杂。
如果您想要天,小时,分钟,秒的差异,那很简单:将所有内容转换为NSDate,计算以秒为单位的差异,转换为天,小时,分钟,秒。
除此之外,您需要先定义实际需要的结果。今天凌晨1点和晚上11点是同一天,但今天晚上11点和明天凌晨1点是不同的日子 - 即使在第一种情况下,差异是22小时,在第二种情况下仅两小时。所以你必须定义你想要的东西。您必须定义您希望结果为“0天”的情况,并且在这种情况下您希望得到“1天”的结果。
如果您更改时区,某些日期将移至不同的日期,有些日期则不会。
由您来决定您想要的结果。在任何情况下,我都会将所有日期转换为相关时区,提取日期,并计算天数差异。
答案 1 :(得分:-2)
您需要将日期转换为纪元时间。
- (NSTimeInterval)timeIntervalSince1970
执行此操作后,您可以使用以下代码,以秒为单位查找时差并进行比较
NSDate * date1 = [NSDate date];
NSDate * date2 = [NSDate date];
NSTimeInterval secs = [date1 timeIntervalSinceDate:date2];
if(secs< 0)
{
的NSLog("少&#34);
}
否则if(secs> 0)
{
的NSLog("更大&#34);
}
否则
{
的NSLog(@"相同的&#34);
返回NSOrderedSame;
}