//
// 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