【发布时间】:2016-04-17 14:53:47
【问题描述】:
我有一个日期选择器,其模式设置为日期(我只对日、月、年感兴趣)。日期是在 viewDidLoad 期间设置的
let currentDate = NSDate()
dp_MainDatePicker.date = currentDate
dp_MainDatePicker.maximumDate = currentDate
这看起来不错……但是……
我将日期存储在具有 var dateForLog: NSDate 的 Singleton 类中,在另一个视图控制器中,我会将这个日期保存到核心数据中...
newMileageLog.setValue(Data.sharedData.dateForLog, forKey: "tripDate")
然后我最终在 TableViewCell 中显示日期...
//format date as medium style date
let formatter = NSDateFormatter()
formatter.dateStyle = .MediumStyle
let logDateString = formatter.stringFromDate(mileageLog.tripDate!)
cell.lb_LogDate.text = logDateString
不幸的是,这没有考虑夏令时......例如
如果日期选择器设置为 2016 年 1 月 14 日,则 tableviewcell 中的日期为 2016 年 1 月 14 日
如果我们将 datepicker 设置为 2016 年 4 月 14 日,则 tableviewcell 中的日期为 2016 年 4 月 13。如果我放置一个断点,我可以看到即使表盘设置为 2016 年 4 月 14 日,dateForLog正在显示 2016-04-13 23:00:00 +0000
如何阻止这种情况发生?
【问题讨论】:
-
尝试添加“formatter.locale = NSLocale.systemLocale()”
-
在进行了更多搜索后,我发现了这个可能会解决我的问题的问题....stackoverflow.com/questions/26189656/…... 我现在遇到的问题是已发布的答案给了我一个 Instance member 'cal ' 不能用于 ViewController 类型
-
所有排序...我已经使用了上面找到的解决方案...我只需将代码放在函数中而不是直接放入类中。
标签: swift date datepicker