创build具有特定时区的NSDate对象
我已经写了一个方法,接受一个NSDate对象,应该把它变成一个NSDate对象与EST时区。 我见过其他人完成这个的方式是使用date格式化程序将date更改为具有指定时区的string。 问题是当我尝试使用“dateFromString”将该string更改回NSDate对象。
- (NSDate*)turnToEST:(NSDate*)date { NSLog(@"turnToEST called with date %@", date); NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init]; [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; [dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"EST"]]; NSString *stringFromDate = [dateFormatter stringFromDate:date]; NSLog(@"date formatted is %@", stringFromDate); NSDate *dateFromString = [[NSDate alloc] init]; NSDateFormatter *dateFormatter2 = [[NSDateFormatter alloc]init]; [dateFormatter2 setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; dateFromString = [dateFormatter2 dateFromString:stringFromDate]; NSLog(@"date has been changed to %@", dateFromString); return date; }
随着输出…
turnToEST called with date 2013-12-19 14:15:17 +0000 date formatted is 2013-12-19 09:15:17 date has been changed to 2013-12-19 14:15:17 +0000
我不确定为什么这个和以前不一样
将NSString转换为NSDate(并返回)
NSDate
值没有关联的时区,它们代表了一个抽象的时刻。 所以“一个有EST时区的NSDate对象”不是存在的东西。 时区只在格式化输出或尝试执行基于日历的math时才起作用。
打印输出时, NSLog
始终使用UTC。
所以你花了一些时间,把它格式化成一个特定时区的string,然后parsing回到同一时刻。 这是按照预期工作的。
- 如何检查Firebase中孩子的数据
- 如何将数据从UIViewController发送到Swift ios中的UITabBarControllers第一个选项卡
- iOS UI自动化元素找不到子元素
- 在iOS 8.2和Xcode 6.2中,iOS模拟器崩溃,“成功启动后无法查找#ID的进程ID”。
- 如何entriely禁用UITextView的滚动?
- 当UITextView的文本扩展超过1行时展开UITextView和UITableView
- UIView drawRect:绘制倒像素,制作一个洞,一个窗口,负空间
- 在tableview单元格中使用KVO来跟踪Swift 3中类实例的特定属性的更改
- 无法login到iOS实际的Device MobileFirst Project上的应用程序