【发布时间】:2013-09-28 17:11:19
【问题描述】:
我有一个格式为 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;
处理这种情况的正确方法是什么,以便天数差异是准确的?
【问题讨论】:
-
他描述的场景根本不像GMT“日期转换”。他似乎在描述计算日期之间的天数,但可能使用不同的日历。
-
@aahrens,您是在谈论泰国的“约会”而第二个约会在不同的时区/地区,还是都在泰国?或者您是在谈论设备在一个区域设置中,但您需要您正在使用的日期才能使用不同的区域设置?你能用这些信息更新你的问题吗?
-
您必须决定是用绝对 (UTC) 术语还是相对于本地时间来计算差异。如果是绝对/UTC,那么您可以简单地减去 NSDate 对象。如果相对于本地时间(并且两个端点位于不同的时区,或者可能只有一个在 DST 和一个在标准时间),那么您必须使用 NSCalendar/NSDateComponents 或格式化两个日期并解析字符串。
-
而你还必须决定是否应该考虑 1/1/2014 23:00 到 1/3/2014 23:59 一天或两天。
标签: ios objective-c nsdate nsdateformatter nstimeinterval