关于NSDate的一些实际工作遇到的坑
来源:互联网 发布:人工智能招聘 编辑:程序博客网 时间:2024/05/29 18:45
NSDate *date = picker.date;
NSTimeZone *timeZone=[NSTimeZonesystemTimeZone];
NSInteger seconds=[timeZonesecondsFromGMTForDate:date];
NSDate *newDate=[datedateByAddingTimeInterval:seconds];
NSLog(@"%@",newDate);
NSString *str = [NSStringstringWithFormat:@"%@",newDate];
str = [str substringToIndex:16];
NSLog(@"%@",str);
转换后的,str 即为
2,公司的接口在mac端模拟器运行,网络数据请求正常,在真机上面跑,网络数据无法请求。接口是需要传入一个long类型的时间戳,源代码如下
NSDate * lastDay = [NSDate dateWithTimeInterval:-24*60*60 sinceDate:date];
NSDateFormatter * formatter = [[NSDateFormatter alloc]init];
formatter.dateFormat = @"yyyy-MM-dd";
NSString * dateStr = [formatter stringFromDate:lastDay];
_curriumView.currentDay.text = dateStr;
NSLog(@"%@",_curriumView.currentDay.text);
NSDate * date =[formatter dateFromString:_curriumView.currentDay.text];
NSTimeInterval timeInterval = [date timeIntervalSince1970];
NSString * timeStr = [NSString stringWithFormat:@"%f",timeInterval];
long dateNum = [timeStr doubleValue]*1000+60*1000;
NSLog(@"时间%ld",dateNum);
if (_role.roleId == 102) {
[[ParentList sharedInstance]getChildrenArr:dateNum withBlock:^(NSArray *arr) {
_parentArr = arr;
for (int i = 0; i<arr.count; i++) {
UITableView * parentTable = [self.view viewWithTag:10+i];
[parentTable reloadData];
}
}];
结果发现红色标注过的代码打印出来的时间是错误的,(服务器是java写的,传入的时间戳应该是13位的,因此乘以1000),初步排查为13位的超出了long的取值范围,因此将long改成long long,但是结果还是错误的时间戳,一般错误主要是因为cpu不一样造成的,后续发现是long long类型转化为long类型,中间变量NSNumber,以及后面的应该加一个小数点才可以,具体的原因估计是涉及到cpu不通引起的,我用的模拟器是5c
更改过后代码是:
NSDate * lastDay = [NSDate dateWithTimeInterval:-24*60*60 sinceDate:date];
NSDateFormatter * formatter = [[NSDateFormatter alloc]init];
formatter.dateFormat = @"yyyy-MM-dd";
NSString * dateStr = [formatter stringFromDate:lastDay];
_curriumView.currentDay.text = dateStr;
NSLog(@"%@",_curriumView.currentDay.text);
NSDate * date =[formatter dateFromString:_curriumView.currentDay.text];
NSTimeInterval timeInterval = [date timeIntervalSince1970];
NSString * timeStr = [NSString stringWithFormat:@"%f",timeInterval];
NSNumber * num = [NSNumber numberWithLongLong:[timeStr longLongValue]];
long long dateNum = [num longValue]*1000.0+60*1000.0;
注:java语言和ios语言的long类型取值范围是不一样的,为了适配在ios端取long long类型
- 时间戳转时间的方法
- NSDate *confromTimesp = [NSDate dateWithTimeIntervalSince1970:1296035591];
- NSLog(@"1296035591 = %@",confromTimesp);
- NSString *confromTimespStr = [formatter stringFromDate:confromTimesp];
- NSLog(@"confromTimespStr = %@",confromTimespStr);
- 时间戳转时间的方法:
- NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
- [formatter setDateStyle:NSDateFormatterMediumStyle];
- [formatter setTimeStyle:NSDateFormatterShortStyle];
- [formatter setDateFormat:@"yyyyMMddHHMMss"];
- NSDate *date = [formatter dateFromString:@"1283376197"];
- NSLog(@"date1:%@",date);
- [formatter release];
- 关于NSDate的一些实际工作遇到的坑
- 关于log4j在实际工作中使用的一些想法
- 关于iOS NSDate的一些用法
- iOS 关于NSDate的一些记录
- NSDate 的一些操作
- NSDate的一些方法
- eclipse git实际工作中遇到的问题总结
- 关于NSDate,NSDateFormatter,NSTimeZone的一些通俗理解
- Freemarker第一次实际项目使用遇到的一些问题
- 实际项目中遇到的一些小问题
- 工作遇到的一些简单的问题
- 实际工作中用到的一些知识总结
- NSDate的一些常用范例
- 一些NSDate的简单使用
- 实际工作用到的:关于PIOVT和UNPIOVT的用法
- mysql 关于查询时间的中工作中遇到的一些问题 有代表性的
- 工作中遇到的一些问题小结
- Spring工作当中遇到的一些记录
- java 循环或多线程遍历文件 io持有问题
- weex接触
- JPEG算法解密(一)
- Java设计模式之 —— 模板方法(Template Method)
- 构造函数和析构函数
- 关于NSDate的一些实际工作遇到的坑
- JS根据服务器时间倒计时
- 2016.08.17【初中部 NOIP提高组 】模拟赛C(图论专项模拟试题)
- 如何取消tableview自动布局的20像素
- 内存计算技术应对大数据挑战
- JPEG算法解密(四)
- hibernate 二级缓存和查询缓存原理和关系
- 浅谈AsyncTask
- 物理看板还是电子看板?