我正在尝试从文本框中获取日期并将其转换为特定的日期格式,下面是代码:
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
。这比输入的日期提前一天。
答案 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,根据此列表,您必须决定使用缩写GMT
,UTC
或EST
。如果您在印度,请使用以下代码。
[dateFormat setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT+0:00"]];
来自苹果的讨论
一般情况下,不鼓励使用缩写除外 唯一的实例,例如“UTC”或“GMT”。时区缩写是 不标准化,因此给定的缩写可能有多个 意思 - 例如,“EST”指美国的东部时间 国家和澳大利亚