OC - 时间日期类NSDate

   //NSDate 时间日期类 NSDate 二进制数据流
{
//1.获取当前时间 零时区的时间
//显示的是格林尼治的时间: 年-月-日 时:分:秒:+时区
NSDate *date = [NSDate date];
NSLog(@"当前零时区时间 %@", date); //2.获得本地时间 东八区 晚八个小时 以秒计时
NSDate *date1 = [NSDate dateWithTimeIntervalSinceNow:8 * 60 * 60];
NSLog(@"今天此时的时间 %@",date1); //3.昨天此时的时间
NSDate *yesterdayDate = [NSDate dateWithTimeIntervalSinceNow:(-24 + 8) * 60 * 60];
NSLog(@"昨天此时的时间 %@",yesterdayDate); //4.明天此刻
NSDate *tomorrowDate = [NSDate dateWithTimeInterval:24 * 60 * 60 sinceDate:date1];
NSLog(@"明天此刻的时间 %@",tomorrowDate);
        

      //n天此刻

    NSDate *tomorrowDate7 = [NSDate dateWithTimeInterval: n * 24 * 60 * 60 sinceDate:date1];  

    NSLog(@"n天此刻的时间 %@",tomorrowDate7);


//5.NSTimeInterval 时间间隔(单位是秒),double 的 typedef //昨天此时与明天此刻的时间间隔
NSTimeInterval timeInterval = [tomorrowDate timeIntervalSinceDate:yesterdayDate];
NSLog(@"昨日和明天此刻的时间(秒) %.0f",timeInterval); //练习: 计算一个当前时间和一个固定时间的差值如果差值在60妙以内输出“刚刚”,如果在60秒到3600之前,则输出“XX分钟之前”,若在3600到24 *3600 之内,则输出“XX小时之前”,若再24 * 3600之外,则显示固定时间
{
//保证两个日期是在同一个时区
NSDate *date = [NSDate dateWithTimeIntervalSinceNow: 4000];
NSDate *now = [NSDate date];
NSTimeInterval timeInterval = [now timeIntervalSinceDate:date];
if (timeInterval < 60 && timeInterval > 0) {
NSLog(@"刚刚");
}
else if(timeInterval >= 60 && timeInterval <= 3600){
NSLog(@"%.0f分钟前",timeInterval / 60);
}
else if(timeInterval > 3600){
NSLog(@"%.0f小时前", timeInterval / 3600);
}
else{
NSLog(@"在当前时间之后");
}
} //时间戳:从1970.1.1 到当前时间的时间间隔就叫时间戳
//常见于网址中 1970 1月1日0时0分0秒 计算机元年
//32位系统 能够表示的最大数 2^31 - 1 表示时间的最大时间是68.1年, 也就是2038年2年份左右, 64位系统能够表示2924亿年
{
NSTimeInterval timeIn = [date timeIntervalSince1970];
NSLog(@"1970年1月1日0时0分0秒至今相差 %.0f 秒", timeIn);
}
} // NSDateFormatter NSDate和字符串的相互转换
{
//一、date转字符串
{
//系统会认为字符串是零时区的时间, 转成NSDate是东八时区的 //例子:将当前日期转成字符串(两种格式)
//设定日期格式:yyyy(年) - MM(月) - dd(日) H(小时) m (分钟)s(秒) NSDate *date = [NSDate date];
//创建一个格式对象
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init]; //2015 - 12 - 08 11:01:01 hh: 12小时;HH: 24小时
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *dateStr = [dateFormatter stringFromDate:date];
NSLog(@"字符串表示:%@",dateStr); //2015年12年08月 11时01分01秒 YY:12 yyyy:2012
NSDateFormatter *dateFormaterA = [[NSDateFormatter alloc]init];
[dateFormaterA setDateFormat:@"yyyy年MM年dd日 HH时mm分ss秒"];
NSString *dateStrA = [dateFormaterA stringFromDate:date];
NSLog(@"%@",dateStrA);
} //二、字符串转date
{
//系统会认为字符串是东八区的时间, 转乘NSDate是零时区的
NSString *dateStr = @"2011年11月11日 11时11分11秒";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"yyyy年MM月dd日 hh时mm分ss秒"];
NSDate *date = [dateFormatter dateFromString:dateStr];
NSDate *date2 = [date dateByAddingTimeInterval:8 * 60 * 60];//将转换回来的对象手动加上8小时,回到北京时间
NSLog(@"字符串转data: %@",date2);
} }

  两个时间之间的差

   

  NSString * se = [[self class] dateTimeDifferenceWithStartTime:@"2017-05-01 00:00:00" endTime:@"2017-06-01 00:00:00"];

  NSLog(@"两个日期之间的相差-----%@", se);

  

/**

* 开始到结束的时间差

*/

+ (NSString *)dateTimeDifferenceWithStartTime:(NSString *)startTime endTime:(NSString *)endTime{

NSDateFormatter *date = [[NSDateFormatter alloc]init];

[date setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

NSDate *startD =[date dateFromString:startTime];

NSDate *endD = [date dateFromString:endTime];

NSTimeInterval start = [startD timeIntervalSince1970]*1;

NSTimeInterval end = [endD timeIntervalSince1970]*1;

NSTimeInterval value = end - start;

int second = (int)value %60;//秒

int minute = (int)value /60%60;

int house = (int)value / (24 * 3600)%3600;

int day = (int)value / (24 * 3600);

NSString *str;

if (day != 0) {

str = [NSString stringWithFormat:@"耗时%d天%d小时%d分%d秒",day,house,minute,second];

}else if (day==0 && house != 0) {

str = [NSString stringWithFormat:@"耗时%d小时%d分%d秒",house,minute,second];

}else if (day== 0 && house== 0 && minute!=0) {

str = [NSString stringWithFormat:@"耗时%d分%d秒",minute,second];

}else{

str = [NSString stringWithFormat:@"耗时%d秒",second];

}

return str;

}

 

OC - 时间日期类NSDate的更多相关文章

  1. Linux 时间日期类、搜索查找类、 压缩和解压类指令

    l 时间日期类 date指令-显示当前日期 基本语法 1) date (功能描述:显示当前时间) 2) date +%Y (功能描述:显示当前年份) 3) date +%m (功能描述:显示当前月份) ...

  2. 整理总结 python 中时间日期类数据处理与类型转换(含 pandas)

    我自学 python 编程并付诸实战,迄今三个月. pandas可能是我最高频使用的库,基于它的易学.实用,我也非常建议朋友们去尝试它.--尤其当你本身不是程序员,但多少跟表格或数据打点交道时,pan ...

  3. Linux时间日期类,压缩和解压类

    一.时间日期类 1.data指令 1.基本指令 date 显示当前日期 data +%Y 显示当前年份 data +%m 显示当前月份 data +%d 显示当前天 data +%Y-%m-%d %H ...

  4. Java8 时间日期类操作

    Java8 时间日期类操作 Java8的时间类有两个重要的特性 线程安全 不可变类,返回的都是新的对象 显然,该特性解决了原来java.util.Date类与SimpleDateFormat线程不安全 ...

  5. linux学习之路第七天(时间日期类指令详解)

    时间日期类 1.date指令 date指令 - 显示当前日期 基本语法 1)date (功能描述:显示当前时间): 2) date + %Y (功能描述:显示当前年份) 3)date+%m( 功能描述 ...

  6. CentOS时间日期类语法

    目录 一.date时间日期类 1. date显示当前时间 2. date 显示非当前时间 3. date 设置系统时间 二.cal 查看日历 一.date时间日期类 date [OPTION]... ...

  7. linux 实用指令时间日期类

    linux 使用指令时间日期类 data 显示当前日期 基本语法 date 显示当前时间 date+%Y 显示当前年份 date+%m 显示当前月份 date+%d 显示当前是哪一天 date &qu ...

  8. java时间日期类(Date、DateFormat、Calendar)学习

    1.Date类 常用方法:long getTime(),用于返回当前时刻的毫秒值 Date d = new Date(2000); System.out.println(d.getTime());// ...

  9. 序列化和反序列化Java 8的时间/日期类

    序列化 假如有 Clock 类: public class Clock { private LocalDate localDate; private LocalTime localTime; priv ...

随机推荐

  1. css-布局的漂浮

    float ** 属性值 left: 文本流向对象的右边 right:文本流向对象的左边 <html> <head> <title>World</title& ...

  2. javascript实现SHA1算法

    web里面密码直接传到后台是不安全的,有时候需要进行加密,找到一个不错的javascript SHA1算法: <!DOCTYPE html> <html lang="en& ...

  3. org.apache.ibatis.binding.BindingException

    1.异常提示: org.apache.ibatis.binding.BindingException: Mapper method 'com.artup.dao.WorksDao.selectWork ...

  4. VC添加文件到工程出错问题--FileTool.dll

    原文:http://blog.csdn.net/bingdianlanxin/article/details/45112737 在我们的软件开发中,经常需要导入其他文件到我们的工程. 一般,我们会选择 ...

  5. 安卓基础干货(六):安卓Activity的学习

    AndroidManifest文件中的几个细节 结论: 1.一个应用程序可以创建多个桌面图标 2.创建快捷图标的方法: <intent-filter> //应用程序的入口 <acti ...

  6. Python爬虫教程-17-ajax爬取实例(豆瓣电影)

    Python爬虫教程-17-ajax爬取实例(豆瓣电影) ajax: 简单的说,就是一段js代码,通过这段代码,可以让页面发送异步的请求,或者向服务器发送一个东西,即和服务器进行交互 对于ajax: ...

  7. How to import Django DB operations out of Django projects

    i am not familiar with DB opertions. usually i stroe data to txt and other formats. as DB is more an ...

  8. 关于微信公账号H5 API 调用的坑 BUG

    页面A已经配置过,如果是单页面跳转,则页面B可以共享当前的SDK配置(至少菜单是这样的) 刷新页面,原先的菜单仍然会保持原样,只是调用SDK已经失效了,需要重新配置,重新配置后,菜单仍然会保持原样(如 ...

  9. .net 面向对象程序设计深入](2)UML

    1.用例图简介 定义:用例图主要用来描述“用户.需求.系统功能单元”之间的关系.它展示了一个外部用户能够观察到的系统功能模型图. 类型:动态图 应用:需求分析阶段 2.用例图元素 2.1 参与者(Ac ...

  10. linux下查看数据库版本的5中方法

    1.在Linux终端窗口中,输入mysql -V查看MySQL版本信息[sky@qin ~]# mysql -Vmysql  Ver 14.14 Distrib 5.1.29-rc, for pc-l ...