swift_将UIDatePicker到达的传播之间的时间差在数小时出现页面的事

今天,写swift demo当它来到了一个非常精彩的问题,我再次 present 使用页面出来 UIDatePicker 选择时间,然后再回到原来的主界面的时间,结果出现的问题:B页面的正常时间,传回A页面后时间少了8个小时。百思不得其解。Google找了一些答案说是要这样:

 time.timeZone = NSTimeZone.systemTimeZone()
 time.calendar = NSCalendar(calendarIdentifier: NSGregorianCalendar)

加了之后也没有什么作用,还是一样相差8小时。后来有找到第二种解决的方法这样:

let timeZone = NSTimeZone.systemTimeZone()
let seconds = timeZone.secondsFromGMTForDate(addObject.time.date)
let correctDate = addObject.time.date.dateByAddingTimeInterval(Double(seconds))

尽管说问题攻克了,可是还是有点不明确为什么会出现这种情况,难道是 XCode GM版的原因(不太可能啊~)。

希望知道啥原因的童鞋指教,共同进步!

//------------2014.09.20 改动--------------------

今天装了XCode 6.0.1正式版,从B页面传datePicker.date 到 A页面已经不会出现少了8个小时的问题了。可是打印出来的时间却是和debug看到的时间不一样,一样相隔8个小时,debug 看到的是 CST时间。而打印出来时间可能是不是CST时间,应该是时区问题造成的,眼下还不知道怎样让打印出来的时间跟系统显示的时间相一致。

參考资料:IOS-NSDate 差异8小时

版权声明:本文博客原创文章,博客,未经同意,不得转载。

时间: 2024-11-08 21:47:28

swift_将UIDatePicker到达的传播之间的时间差在数小时出现页面的事的相关文章

计算两个日期时间之间的时间差:28小时38分钟

<script src="moment.min.js"></script> var now = "04/09/2017 13:59:59"; var then = "02/09/2017 14:20:30"; var ms = moment(now,"DD/MM/YYYY HH:mm:ss").diff(moment(then,"DD/MM/YYYY HH:mm:ss")); var

js实现的计算两个时间之间的时间差

js实现的计算两个时间之间的时间差:在实际应用中,需要计算两个时间点之间的差距,一般来说都是计算当前时间和一个指定时间点之间的差距,并且有时候需要精确到天.小时.分钟和秒,下面就简单介绍一下如何实现此效果.代码如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.

一到一千之间的所有完数

//一个数如果恰好等于它的因子之和,这个数就称为"完数".(因子:除去这个数本身正的约数)//例如6=1+2+3.编程 找出1000以内的所有完数class  TestWanShu{    public static void main(String[] args)     {        int sum=0;        for(int i=1;i<=1000;i++){          for(int j=1;j<i;j++){              if(i

Java 根据给定的日期,计算两个日期之间的时间差

计算两个Date之间的时间差,基本思路为把Date转换为ms(微秒),然后计算两个微秒时间差. 时间的兑换规则如下: 1s秒 = 1000ms毫秒 1min分种 = 60s秒 1hours小时 = 60min分钟 1day天 = 24hours小时 package com.qiyadeng.date; import java.text.SimpleDateFormat; import java.util.Date; public class DateDifferentExample { publ

C语言笔试题精选1---求两个数之间较大的数,不使用if、while、switch、for、?:/以及任何比较语句

题目:求两个数a.b之间较大的数,不使用if.while.switch.for.?:/以及任何比较语句 #include <stdio.h> int min(int a, int b) { int d = a - b; int flag = ((unsigned int)d) >> 31; int array[] = {b, a}; return array[flag]; } int main(int argc, char *argv[]) { int i_min, a, b; s

程序猿之---C语言细节20(符号和有符号之间转换、两数相加溢出后数值计算)

主要内容:无符号和有符号之间转换.两数相加溢出后数值计算 #include <stdio.h> /* 这个函数存在潜在漏洞 */ float sum_elements(float a[], unsigned length) { int i; float result = 0; for(i = 0; i <= length - 1; i++) { result += a[i]; printf("a[%d] = %f \n",i,a[i]); } return resul

打印出1-10000之间的所有对称数(如121,1331,2442)。

练习题:打印出1-10000之间的所有对称数(如121,1331,2442). 自己写的代码: var isSym = function (num) { var str = ''; for (var i = 1; i <=9; i++) { //如果个位算,可去掉注释 //str+=i;str += ','; for (var j = 1; j <= 9; j++) { if (i == j) { str = str + i + ',' ; str = str + i + j + i + ',

程序员之---C语言细节20(符号和有符号之间转换、两数相加溢出后数值计算)

主要内容:无符号和有符号之间转换.两数相加溢出后数值计算 #include <stdio.h> /* 这个函数存在潜在漏洞 */ float sum_elements(float a[], unsigned length) { int i; float result = 0; for(i = 0; i <= length - 1; i++) { result += a[i]; printf("a[%d] = %f \n",i,a[i]); } return resul

swift_将UIDatePicker获取到的时间传到下一个页面出现相差几个小时的问题

今天,在写swift demo的时候遇到了一个很奇葩的问题,我再 present 出来的页面中利用 UIDatePicker 选取时间,然后再将获取到的时间传回原来的主界面,结果问题出现了:B页面获取时间正常,传回A页面后时间少了9个小时.百思不得其解,Google找了一些答案说是要这样: time.timeZone = NSTimeZone.systemTimeZone() time.calendar = NSCalendar(calendarIdentifier: NSGregorianCa