NSDate和NSDateFormatter 相关应用代码示例
此方法用来计算当前时间与目标时间的先后顺序:
-(NSDate *)calculateTimeWithCurrentTime:(NSDate *)currentDate{
//将当前时间转为本地时区
NSDate * currentLocalDate = [self localDateFromDate:currentDate];
NSLog(@"currentDate--->%@",currentLocalDate);
//设置目标时间为当天15:30
NSString *dateStr = [NSString stringWithFormat:@"%@",currentLocalDate];
NSString *dateString = [dateStr substringToIndex:11];
NSString *targetDateStr = [NSString stringWithFormat:@"%@15:30:00",dateString];
NSDateFormatter *formatter001 = [[NSDateFormatter alloc] init];
[formatter001 setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
NSDate * targetDate = [formatter001 dateFromString:targetDateStr];
//将目标时间转为本地时区
targetDate = [self localDateFromDate:targetDate];
NSLog(@"targetDate--->%@",targetDate);
//比较当前时间和目标时间
NSComparisonResult result = [currentLocalDate compare:targetDate];
NSLog(@"result--->%d",result);
//获取当前日期是星期几
NSString *weekDay = [self weekdayStringFromDate:currentDate];
NSLog(@"weekDay--->%@",weekDay);
//计算收益时间
NSDate *calDate;
if ([weekDay isEqualToString:@"周一"] || [weekDay isEqualToString:@"周二"] || [weekDay isEqualToString:@"周三"] ) {
//升序
if (result == NSOrderedAscending) {
NSLog(@"15:30之前");
calDate = [currentDate dateByAddingTimeInterval:aDay];
}
else{
NSLog(@"15:30之后");
calDate = [currentDate dateByAddingTimeInterval:2*aDay];
}
}
else if ([weekDay isEqualToString:@"周四"]){
//升序
if (result == NSOrderedAscending) {
calDate = [currentDate dateByAddingTimeInterval:aDay];
}
else{
calDate = [currentDate dateByAddingTimeInterval:4*aDay];
}
}
else if ([weekDay isEqualToString:@"周五"]){
//升序
if (result == NSOrderedAscending) {
calDate = [currentDate dateByAddingTimeInterval:3*aDay];
}
else{
calDate = [currentDate dateByAddingTimeInterval:4*aDay];
}
}
else if ([weekDay isEqualToString:@"周六"]){
calDate = [currentDate dateByAddingTimeInterval:3*aDay];
}
else if ([weekDay isEqualToString:@"周日"]){
calDate = [currentDate dateByAddingTimeInterval:2*aDay];
}
calDate = [self localDateFromDate:calDate];
return calDate;
}
将时区转为当前时区
- (NSDate *)localDateFromDate:(NSDate *)date{
//获取系统时区
NSTimeZone *zone = [NSTimeZone systemTimeZone];
//时间间隔
NSInteger interval = [zone secondsFromGMTForDate: date];
//得到当前时间
NSDate *localeDate = [date dateByAddingTimeInterval: interval];
return localeDate;
}
判断当天是星期几:
- (NSString*)weekdayStringFromDate:(NSDate*)inputDate {
NSArray *weekdays = [NSArray arrayWithObjects: [NSNull null],@"周日", @"周一", @"周二", @"周三", @"周四", @"周五", @"周六", nil];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSTimeZone *timeZone = [[NSTimeZone alloc] initWithName:@"Asia/Shanghai"];
[calendar setTimeZone: timeZone];
NSCalendarUnit calendarUnit = NSCalendarUnitWeekday;
NSDateComponents *theComponents = [calendar components:calendarUnit fromDate:inputDate];
return [weekdays objectAtIndex:theComponents.weekday];
}
NSDate和NSDateFormatter 相关应用代码示例的更多相关文章
- 推荐Java五大微服务器及其代码示例教程
来源素文宅博客:http://blog.yoodb.com/yoodb/article/detail/1339 微服务越来越多地用于开发领域,因为开发人员致力于创建更大,更复杂的应用程序,这些应用程序 ...
- Java基础知识强化之IO流笔记72:NIO之 NIO核心组件(NIO使用代码示例)
1.Java NIO 由以下几个核心部分组成: Channels(通道) Buffers(缓冲区) Selectors(选择器) 虽然Java NIO 中除此之外还有很多类和组件,Channel,Bu ...
- Hadoop RCFile存储格式详解(源码分析、代码示例)
RCFile RCFile全称Record Columnar File,列式记录文件,是一种类似于SequenceFile的键值对(Key/Value Pairs)数据文件. 关键词:Reco ...
- Delphi之通过代码示例学习XML解析、StringReplace的用法(异常控制 good)
*Delphi之通过代码示例学习XML解析.StringReplace的用法 这个程序可以用于解析任何合法的XML字符串. 首先是看一下程序的运行效果: 以解析这样一个XML的字符串为例: <? ...
- [代码示例]用Fine Uploader+ASP.NET MVC实现ajax文件上传
原文 [代码示例]用Fine Uploader+ASP.NET MVC实现ajax文件上传 Fine Uploader(http://fineuploader.com/)是一个实现 ajax 上传文件 ...
- 分享用于学习C++音频处理的代码示例
与<分享用于学习C++图像处理的代码示例>为姊妹篇. 为了便于学习C++音频处理并研究音频算法, 俺写了一个适合初学者学习的小小框架. 麻雀虽小五脏俱全,仅仅考虑单通道处理. 采用Deco ...
- JAVA NIO工作原理及代码示例
简介:本文主要介绍了JAVA NIO中的Buffer, Channel, Selector的工作原理以及使用它们的若干注意事项,最后是利用它们实现服务器和客户端通信的代码实例. 欢迎探讨,如有错误敬请 ...
- Ice简介+Qt代码示例
1.ICE是什么? ICE是ZEROC的开源通信协议产品,它的全称是:The Internet Communications Engine,翻译为中文是互联网通信引擎,是一个面向对象的中间件,它封装并 ...
- 英特尔® 实感™ 深度摄像头代码示例 – R200 摄像头数据流
英特尔开发人员专区原文地址 简介 该可下载代码示例展示了如何使用面向 Windows 的英特尔® 实感™ SDK* 捕捉和查看用 C#/XAML 编写的原始 R200 摄像头数据流. Visual S ...
随机推荐
- IT人可以关注的站
问答平台 知乎 很杂但很专业的社区,就像标题说的:与世界分享你的知识.经验和见解 segmentfault 专业面向开发者的中文技术问答社区 德问 编程社交问答 V2EX 可以看到很多有意思对我这种I ...
- 视觉机器学习读书笔记--------BP学习
反向传播算法(Back-Propagtion Algorithm)即BP学习属于监督式学习算法,是非常重要的一种人工神经网络学习方法,常被用来训练前馈型多层感知器神经网络. 一.BP学习原理 1.前馈 ...
- The shortest path---hdu2224 && Tour---poj2677(旅行商问题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2224 题意:平面上有n个点,问去的路只能从左到右,回的路只能从右到左的,且来回必须经过所有点的最小路径 ...
- [转]SQL SERVER – Importance of Database Schemas in SQL Server
原文地址http://blog.sqlauthority.com/2009/09/07/sql-server-importance-of-database-schemas-in-sql-server/ ...
- 在 shell 脚本获取 ip、数字转换等网络操作
在 shell 脚本获取 ip.数字转换等网络操作 ip 和数字的相互转换 ip转换为数字 :: function ip2num() { local ip=$1 local a=$(echo $ip ...
- 记在virtualbox下挂载共享文件夹的方法
sudo mount -t vboxsf share /usr/share sudo mount -t vboxsf 共享文件夹名称(在设置页面设置的) 挂载的目录
- jsp页面传参大汇总-转帖收藏
http://blog.csdn.net/ssy_shandong/article/details/9328985/
- CSS/HTML 改变鼠标指针形状
改变鼠标指针形状的方法有两种:第一种:用的来改变鼠标指针形状.另一种是:利用第三方控件的方法,而我自己最常用的是第一种:用css样式表来改变鼠标指针形状 我们先来看第一种:用来改变鼠标指针形状. 有些 ...
- 基于DevExpress ImageSlider实现图片轮播效果
工具:DevExpress版本为15.2.7 1.控件类型全称:DevExpress.XtraEditors.Controls.ImageSlider 2.控件所在程序集:DevExpress.Xtr ...
- android 多媒体数据库(非原创)
推荐文章:http://fzlihui.iteye.com/blog/1097952,http://www.cnblogs.com/pen-ink/archive/2011/06/02/2068410 ...