//
// ViewController.m
// 时间日期
//
// Created by 熊永静 on 16/1/6.
// Copyright © 2016年 静. All rights reserved.
//
/*
NSDate 日期
NSTimeInterval 时间间隔
NSDateFormatter 时间格式器
日期 转 时间戳
日期 转 字符串
日期 转 指定格式的字符串
时间戳 转 日期
字符串 转 日期
指定格式的字符串 转 日期
时间的推算
NSDate:日期相关的类 CTM时间(国际标准时间)
1、NSDate 初始化
NSDate *date = [NSDate date];//当前时间
NSDate *date1 = [NSDate dateWithTimeIntervalSinceNow:interval];//获得一个时间间隔 到现在的日期(用于推算 前面 或 后面的时间) 过去的时间间隔(-) 将来的时间间隔(+)
NSDate *date3 = [NSDate dateWithTimeIntervalSince1970:1452044015];//获得 一个时间戳 所表示的日期
2、NSDate -> 时间戳 (1970-now) -> 字符串表示
NSDate有一个属性timeIntervalSince1970 -> 可以获得到 (1970 - now) 一个时间间隔 ->转成字符串就是表示日期的时间戳
NSString *timeStamp = [NSString stringWithFormat:@"%d",(int)curDate.timeIntervalSince1970];
3、两个日期之间的比较
- (NSDate *)earlierDate:(NSDate *)anotherDate;//比较两个日期 谁早 返回早的日期
- (NSDate *)laterDate:(NSDate *)anotherDate;//比较两个日期 谁晚 返回晚的日期
- (BOOL)isEqualToDate:(NSDate *)otherDate;//比较两个日期是否相同 返回BOOL
时间格式器:NSDateFormatter
把日期转换成需要的格式,格式化日期使用字符串来表示的
@"yyyy-MM-dd HH:mm:ss"年月日
@"2016-01-06 11:06:30";
作用:
1、可以把日期转换成字符串(指定格式)
2、字符串(指定格式)转换成日期
注意:
会把GTM时间转换成系统时间,时间将没有8小时时差
日期格式如下:
y 年
M 年中的月份
D 当天是今年的第多少天
d 月份中的天数
F 月份中的周数
E 星期几
a Am/pm
H 一天中的小时数(0-23)
k 一天中的小时数(1-24)
K am/pm 中的小时数(0-11) Number 0
h am/pm 中的小时数(1-12) Number 12
m 小时中的分钟数 Number 30
s 分钟中的秒数 Number 55
S 毫秒数 Number 978
z 时区 General time zone Pacific Standard Time; PST; GMT-08:00
Z 时区 RFC 822 time zone -0800
------------------------------
日期格式器的使用
把日期转换成字符串
NSDateFormatter 把日期 转换成 需要的格式
格式化日期的 格式 用字符串 表示
@"yyyy-MM-dd HH:mm:ss"
@"2016-01-06 11:06:30";
作用:
1、日期 转换成 字符串(指定格式)
2、字符串(指定格式) 转换成 日期
*****会把GTM 转换成 系统时间
1、初始化
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
2、设置日期格式器的 格式 -> 用字符串表示
dateFormatter.dateFormat = @"yyyy年MM月dd日 E a";
3、使用格式器 转换
(1)把日期 转成 字符串
NSString *dateS = [dateFormatter stringFromDate:date20];
(2)把字符串 转换成 日期
NSDate *date10 = [formatter dateFromString:dateString];
*/
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// 初始化一个日期方式一
// NSDate *date = [NSDate date];
// 方式二
// NSTimeInterval时间间隔单位秒
// 从现在开始过了多少秒,过去的时间是(-)未来的时间是(+)
NSTimeInterval interval = 60*60*8; NSDate *date1 = [NSDate dateWithTimeIntervalSinceNow:interval];
NSLog(@"%@",date1);
NSTimeInterval pastTen = 60*60*24*10;
NSDate *date2 = [NSDate dateWithTimeIntervalSinceNow:interval-pastTen];
NSLog(@"%@",date2);
// *****方式三
// 时间戳:1970年到现在的一个间隔(字符串)可以表示一个唯一的时间标识
NSDate *date3 = [NSDate dateWithTimeIntervalSince1970:1452044015];
NSLog(@"%@",date3);
// 日期转换成时间间隔->1、可以获得时间戳(1970-现在)2、两个日期的时间间隔
// - (NSTimeInterval)timeIntervalSinceDate:(NSDate *)anotherDate
//1452044015这个时间戳对应的日期与当前时间的时间间隔
NSTimeInterval interval2 = fabs([date3 timeIntervalSinceDate:[NSDate date]]);
NSLog(@"%f",interval2);
// 计算两个日期差多少小时多少分多少秒
int h = interval2/(60*60);
NSLog(@"两个时间相差%d小时",h);
// 计算完小时之后剩余的时间间隔
int remainTime = ((int)interval2)%(60*60);
int s = remainTime/60;
NSLog(@"相隔多少分%d",s);
int m = remainTime%60;
NSLog(@"相隔多少分%d",m);
/*
取绝对值:不区分正负数 (无符号)
abs(<#int#>)
fabs(<#double#>)
fabsf(<#float#>)
*/
// 从现在到1970年的时间间隔
// 日期转时间戳
NSDate *curDate = [NSDate date];
NSLog(@"%f",curDate.timeIntervalSince1970);
NSString *timeStamp = [NSString stringWithFormat:@"%d",(int)curDate.timeIntervalSince1970];
NSLog(@"%@",timeStamp);
// 两个日期之间的比较
// 比较1451047216和1451847216
// 1、要转换成日期
NSDate *one = [NSDate dateWithTimeIntervalSince1970:1451047216];
NSDate *two = [NSDate dateWithTimeIntervalSince1970:1451847216];
// 2、开始比较
NSDate *eralierDate = [one earlierDate:two];//比较one是不是比two早,会返回一个比较早的日期
NSLog(@"比较早的日期%@",eralierDate);
NSDate *laterData = [one laterDate:two];
NSLog(@"比较早的日期%@",laterData);
// 比较两个日期是否一样,返回值是BOOL类型
BOOL result = [one isEqualToDate:two];
NSLog(@"%d",result);
#pragma mark---------------------------------
// 日期格式器
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
// *****格式属性
formatter.dateFormat = @"yyyy年MM月dd日 hh:mm:ss a E";
// 大写的M表示月,小写的m表示分
// 大写的H表示24进制,小写的h表示12
// 大写的S表示毫秒,小写的s表示秒
// 把日期转换成字符串
// 1、日期
NSDate *now = [NSDate date];
// 2、使用日期格式器进行转换
NSString *dataString = [formatter stringFromDate:now];
NSLog(@"%@",dataString);
// 3、把字符串转换成日期
NSDate *date11 = [formatter dateFromString:dataString];
NSLog(@"%@",date11);
// 1451847216这个时间戳是某年某月某日 某周几 上下午
// 1、找到时间戳 所在的日期
NSString *timeStemp = @"1451847216";
NSDate *date22 = [NSDate dateWithTimeIntervalSince1970:[timeStemp doubleValue]];
// 初始化日期格式器,并指定格式
NSDateFormatter *formatter2 = [[NSDateFormatter alloc] init];
formatter2.dateFormat = @"yyyy年MM月dd日 E a";
// 使用格式器开始转换
NSString *dateCur = [formatter2 stringFromDate:date22];
NSLog(@"%@",dateCur);
// 将周一变成星期一
/*
作业:
添加 创建日期的 字段
日期用 时间戳 的形式 存储
在添加内容的时候 自动保存到 数据库
*/
}
@end