1

例如,我有两个日期(用两个不同的 NSString 编写)

31/12/2011

31/03/2012

我必须检查今天是否在这个范围内。

为了从 NSString 中读取日期,我这样做:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd/MM/yyyy"];
[dateFormatter setTimeZone:[NSTimeZone systemTimeZone]];
NSDate *mydate = [dateFormatter dateFromString:my_string];
NSLog(@"%@", mydate);

但是,在这个例子中,日志是这个

2011-12-30 23:00:00 +0000
2012-03-30 23:00:00 +0000

所以晚了一个小时。我知道使用

NSString *string = [dateFormatter stringFromDate:my_date];

我的字符串没问题,但我看不出今天是否在使用 NSString 的范围内(或不在?)!

所以我必须使用NSDate,但是如何解决“时区”问题呢?

另外,我也有这个问题

[NSDate date];

它在一小时前返回给我(我不想要它,因为如果有人在午夜检查,电话将是前一天!)

4

2 回答 2

1

以下内容应该有所帮助:

[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"EST"]];

有关更多详细信息,请查看这个问题......它看起来很相似。“EST”可以替换为所需的任何时区。

于 2011-11-24T15:24:22.177 回答
0

我可能弄错了,但看起来,在这种情况下你不需要关心时区。如果您只有 dd/MM/yyyy 格式的日期,那么当您使用 NSDateFormatter 解析它时,它将默认使用当前时区。因此,当您将与今天的日期进行比较时,所有 3 个日期都将位于同一时区,并且不会执行日期/时间调整。

于 2011-11-24T15:52:38.560 回答