首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >格式化程序返回的字符串日期错误!为什么?

格式化程序返回的字符串日期错误!为什么?
EN

Stack Overflow用户
提问于 2011-09-26 06:05:53
回答 3查看 1K关注 0票数 1

我在一个视图中从选取器转换日期时遇到了NSDateFormatter I问题

代码语言:javascript
复制
`NSDateFormatter *output = [[NSDateFormatter alloc] init];
[output setDateStyle:NSDateFormatterMediumStyle];
[output setDateStyle:NSDateFormatterShortStyle];
[output setDateFormat:@"yyyy-MM-dd hh:mm:ss"];    
NSString *StringToSend = [output stringFromDate:datePicker.date];

然后将字符串发送到其他nib

在哪里使用该代码将其转换回来

代码语言:javascript
复制
`NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init];
[inputFormatter setDateStyle:NSDateFormatterMediumStyle];
[inputFormatter setDateStyle:NSDateFormatterShortStyle];
[inputFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
NSDate *formatterDate = [inputFormatter dateFromString:StringFromOtherView];
NSLog(@"%@", formatterDate);`

并返回错误日期发送2011-09-26 01:02:49获取2011-09-25 22:02:49 +0000

怎么啦?

EN

回答 3

Stack Overflow用户

发布于 2011-09-26 06:44:27

因为:

  1. 当你NSLog()一个NSDate时,它总是把它记录在GMT
  2. 你所在的时区,这个时区比GMT早三个小时。因此,在格林尼治标准时间,凌晨1:02对你来说就是(前一天)晚上22:02。
票数 5
EN

Stack Overflow用户

发布于 2011-09-26 06:14:05

在日期格式字符串中包括时区。

票数 0
EN

Stack Overflow用户

发布于 2012-05-16 21:30:29

代码语言:javascript
复制
 + (NSDate*) dateFromString:(NSString*)aStr
 {

  if (aStr.length == 10) {
    aStr = [aStr stringByAppendingFormat:@" 00:00:00"];
 }
   NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
   [dateFormatter setDateFormat:@"MM-dd-yyyy HH:mm:ss"];
   dateFormatter.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
    NSLog(@"strdate %@", aStr);
    NSDate   *aDate = [dateFormatter dateFromString:aStr];
    NSLog(@"date = %@",aDate);
    [dateFormatter release];
    return aDate;

}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7548951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档