尝试格式化日期时出现问题

时间:2014-02-06 11:19:54

标签: ios

我正在尝试从文本框中获取日期并将其转换为特定的日期格式,下面是代码:

    NSString *dateStr = self.hello.text;
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat:@"MM/dd/yyyy"];
    NSDate *date = [dateFormat dateFromString:dateStr];

但是我在一天的价值前一天收到了约会。我是iOS的新手,我怀疑是Java的月份,iOS的第一天从0开始?

示例:

我在文本框中输入02/07/2010。然后* dateStr给我相同的值,格式化值后发生更改*日期显示日期,如:02/06/2010。这比输入的日期提前一天。

2 个答案:

答案 0 :(得分:2)

尝试将时区设置为以下代码

NSString *dateStr = self.hello.text;
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"MM/dd/yyyy"];
[dateFormat setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT+0:00"]];
NSDate *date = [dateFormat dateFromString:dateStr];

答案 1 :(得分:1)

只需添加此行即可。它基于时区。 See this list of time zone country(only see that three letters abbrevation in bracket,根据此列表,您必须决定使用缩写GMTUTCEST。如果您在印度,请使用以下代码。

[dateFormat setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT+0:00"]];

来自苹果的讨论

  

一般情况下,不鼓励使用缩写除外   唯一的实例,例如“UTC”或“GMT”。时区缩写是   不标准化,因此给定的缩写可能有多个   意思 - 例如,“EST”指美国的东部时间   国家和澳大利亚