OC - 时间日期类NSDate
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的更多相关文章
- Linux 时间日期类、搜索查找类、 压缩和解压类指令
l 时间日期类 date指令-显示当前日期 基本语法 1) date (功能描述:显示当前时间) 2) date +%Y (功能描述:显示当前年份) 3) date +%m (功能描述:显示当前月份) ...
- 整理总结 python 中时间日期类数据处理与类型转换(含 pandas)
我自学 python 编程并付诸实战,迄今三个月. pandas可能是我最高频使用的库,基于它的易学.实用,我也非常建议朋友们去尝试它.--尤其当你本身不是程序员,但多少跟表格或数据打点交道时,pan ...
- Linux时间日期类,压缩和解压类
一.时间日期类 1.data指令 1.基本指令 date 显示当前日期 data +%Y 显示当前年份 data +%m 显示当前月份 data +%d 显示当前天 data +%Y-%m-%d %H ...
- Java8 时间日期类操作
Java8 时间日期类操作 Java8的时间类有两个重要的特性 线程安全 不可变类,返回的都是新的对象 显然,该特性解决了原来java.util.Date类与SimpleDateFormat线程不安全 ...
- linux学习之路第七天(时间日期类指令详解)
时间日期类 1.date指令 date指令 - 显示当前日期 基本语法 1)date (功能描述:显示当前时间): 2) date + %Y (功能描述:显示当前年份) 3)date+%m( 功能描述 ...
- CentOS时间日期类语法
目录 一.date时间日期类 1. date显示当前时间 2. date 显示非当前时间 3. date 设置系统时间 二.cal 查看日历 一.date时间日期类 date [OPTION]... ...
- linux 实用指令时间日期类
linux 使用指令时间日期类 data 显示当前日期 基本语法 date 显示当前时间 date+%Y 显示当前年份 date+%m 显示当前月份 date+%d 显示当前是哪一天 date &qu ...
- java时间日期类(Date、DateFormat、Calendar)学习
1.Date类 常用方法:long getTime(),用于返回当前时刻的毫秒值 Date d = new Date(2000); System.out.println(d.getTime());// ...
- 序列化和反序列化Java 8的时间/日期类
序列化 假如有 Clock 类: public class Clock { private LocalDate localDate; private LocalTime localTime; priv ...
随机推荐
- 洛谷11月月赛题解(A-C)
心路历程 辣鸡T3卡我1.5h题意,要不是最后nlh跟我解释了一下大样例估计这次是真凉透了.. A P4994 终于结束的起点 打出暴力来发现跑的过最大数据?? 保险起见还是去oeis了一波,然后被告 ...
- vs2015 web项目加载失败解决办法
1.问题 ---------------------------Microsoft Visual Studio---------------------------Web 应用程序项目 XXWeb 已 ...
- HTML 简单日历制作方法
新手一枚,不会写什么高大上的博文,一些平时做的小练习,献丑 <!doctype html> <html> <head> <meta charset=" ...
- 点击空白处--某个div 消失
背景:1.需要在 easyui grid 的编辑框 获取焦点的时候,在正下方展示费用类型的网格 2.在点击费用类型网格以外的地方,该网格消失 思路: 一.用easyui 的panel 作为费用类型网格 ...
- jQuery Callback函数的用法
在动画100%完成后,调用callback函数 语法如下 $(selector).hide(speed, callback); <!-- html部分 --> <button> ...
- openlayers模仿google地图--地图版权随鹰眼关闭打开而改变位置
额..题目有点长......今天有个群友问我.想实现google地图地图版权随鹰眼关闭状态改变位置的功能.就是这种<ignore_js_op> 打开鹰眼时 地图版权也随着鹰眼位置改变而改 ...
- 08_Spring自定义标签
[ 项目工程 ] [ Person.java 模型类 ] package com.spring.selfxml.model; /** * Created by HigginCui on 2018/9/ ...
- CSS media query应用中的层叠特性使用最佳实践
media query是css3规范中引入的,它提供了一种responsive design的基础机制:浏览器在不同size的设备中将以不同样式展现网页,这就给一个网页能够适应不同device一种可能 ...
- 【Leetcode】【Easy】Merge Two Sorted Lists .
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing t ...
- mongodb 启动
>mongod.exe --dbpath C:\Environ\mongodb-3.0.6\data\db >mongod.exe --logpath "C:\Environ\ ...