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. 【活动】畅想云端加油站,赢iPad

    中石化联手阿里云升级石油化工业务,已运行2月 中石化的“互联网+”战略正在不断深化.4月20日消息,中石化与阿里云共同宣布,双方将展开技术合作,借助阿里巴巴在云计算.大数据方面的技术优势,对部分传统石 ...

  2. 为TextView增加onclick

    必须添加上 android:clickable="true"

  3. 实验三:klee的执行重现机制(示例分析)

    结论性内容: (1)如果是在程序中使用klee_make_symbolic,则可以使用下列脚本进行重现. export LD_LIBRARY_PATH=/home/klee/xiaojiework/k ...

  4. python 替换指定目录下,所有文本字符串

    网页保存后,会把js文件起名为.下载,html里面的引用也会有,很不美观,解决方案:用python替换字符串 import os import re """将当前目录下所 ...

  5. [翻译] RKCardView

    RKCardView Beautiful Twitter / Facebook style cards (built with @JaredTMoskowitz) Follow me on Twitt ...

  6. iostat -x命令诊断

    -x 参数iostat还有一个比较常用的选项-x,该选项将用于显示和io相关的扩展数据. iostat -d -x -k 1 10Device:    rrqm/s wrqm/s   r/s   w/ ...

  7. java IO流 总结

    [-] 1什么是IO 2数据流的基本概念 1 数据流 2 输入流Input  Stream 3 输出流 数据流分类 3 标准IO 命令行参数 标准输入输出数据流 4javaIO层次体系结构 5 非流式 ...

  8. Could not publish to the server. null argument:

    启动tomcat或clean tomcat报错:Could not publish to the server. null argument: Could not publish to the ser ...

  9. 类图(Rose) - Windows XP经典软件系列

    版权声明:本文为xiaobin原创文章.未经博主同意不得转载. https://blog.csdn.net/xiaobin_HLJ80/article/details/24584625         ...

  10. tmux 后台运行程序

    之前写过tmux分屏,其实这个只是方便写代码啥的,那都还不是最重要的.跑模型时,一般一跑就是一整天都是常事. 电脑关机,睡眠,ssh连接失效都会断了程序运行. solution:tmux后台运行程序! ...