Ios 如何将NSString转换为具有特定格式的NSDate
如果以前有人问过这个问题,我很抱歉,但我做了很多检查,似乎找不到答案( 我有一个字符串“2013-05-7 05:53:15+0000”,我想将其转换为NSDate,以便与当前日期和时间进行比较。我不知道如何执行此操作:(我成功地转换了它,但它改变了字符串的外观,我希望它完全是2013-05-7 05:53:15+0000,因为这与我的另一个NSDate项的格式相同 非常感谢您的任何帮助 我很困惑。;)对objective C不熟悉。80年代的老VB/老C程序员试图弄明白这一点。谢谢你的帮助。:) 我的代码如下所示:Ios 如何将NSString转换为具有特定格式的NSDate,ios,nsstring,nsdate,nsdateformatter,Ios,Nsstring,Nsdate,Nsdateformatter,如果以前有人问过这个问题,我很抱歉,但我做了很多检查,似乎找不到答案( 我有一个字符串“2013-05-7 05:53:15+0000”,我想将其转换为NSDate,以便与当前日期和时间进行比较。我不知道如何执行此操作:(我成功地转换了它,但它改变了字符串的外观,我希望它完全是2013-05-7 05:53:15+0000,因为这与我的另一个NSDate项的格式相同 非常感谢您的任何帮助 我很困惑。;)对objective C不熟悉。80年代的老VB/老C程序员试图弄明白这一点。谢谢你的帮助。:
NSDateFormatter *df1 = [[NSDateFormatter alloc] init];
// [df1 setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZ"];
[df1 setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];
df1.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"EN"];
NSDate *titemdate1 = [df1 dateFromString: itemdate];
我有两个日期。一个是应用程序最后运行的日期,另一个是我使用JSON下拉的项目的日期。我想比较这两个日期(如上所述的字符串格式)。当我对字符串进行NSLog时,它们看起来很完美,但当我转换为NSDate进行比较时,我遇到了问题。有什么想法吗?尝试使用以下代码
-(NSDate*)dateFromJsonString:(NSString*)string
{
NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init];
[inputFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss ZZZ"];
NSDate *xExpDate = [inputFormatter dateFromString:string];
return xExpDate;
}
首先,您应该知道,如果您将dateString转换为date并执行NSLog of date,它将返回GMT时间,在大多数情况下,GMT时间与系统时间不同。因此,如果您获得的字符串格式正确,则日期格式化程序可能工作正常。要检查这一点,只需将格式化的日期转换为string和pr整型输出
NSLog(@"formatted date: %@",[df1 stringFromDate:titemdate1]);
如果这没有改变任何东西,并且输出仍然错误,请尝试更改格式化程序的格式
[df1 setDateFormat:@"yyyy-MM-dd HH:mm:ss ZZZ"];
为什么“没有格式”,这是什么意思?最简单(目前为止)的方法是使用NSDateFormatter(而且NSDate对象没有“格式”——它们是纯时间)(我想这是您的困惑。您可以始终使用为NSDate定义的方法比较两个NSDate对象。它们的打印方式与内部表示无关。)是的-我感到困惑;)请看上面的m编辑…也许这可以帮助你们理解我的处境。如果我不知道的话,很抱歉。我有点傻,这就是我请求帮助的原因!:)我已经通过计算完成了整个应用程序,但最后一点我就是无法拼凑(您没有定义您的“问题”是什么。可能与时区有关——当您使用NSDateFormatter时,假定当前时区,除非日期指定了时区。您的是,但您没有使用该格式读取。定义了日期格式模式。您需要“yyyy-MM-dd HH:MM:ss Z”来读取该格式。