#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {

// NSDate 时间类 继承自NSObject,表示一个时间点;

NSDate *date = [NSDate date];

// 打印结果是:格里尼治时间:零时区(世界标准时间) 年-月-日 时:分:秒 +时区

NSLog(@"%@", date);

/*******************  NSTimeInterval 时间间隔  ********************/

// [NSDate dateWithTimeIntervalSinceNow:(NSTimeInterval)]

// NSTimeInterval(表示时间间隔) 本质就是double数据类型

// 在零时区的基础上间隔8个小时就是东八区的时间

// 北京时间

NSDate *date1 = [NSDate dateWithTimeIntervalSinceNow:8*60*60];

NSLog(@"%@", date1);

// 明天的现在时刻

NSDate *nextDay = [NSDate dateWithTimeIntervalSinceNow:24*60*60 + 8*60*60];

NSLog(@"%@", nextDay);

// 明年的现在时刻

NSDate *nextYear = [NSDate dateWithTimeIntervalSinceNow:(366*24 + 8) * 60 * 60];

NSLog(@"%@", nextYear);

// 计算给定时间点和当前时间点的时间间隔

NSTimeInterval interval = nextDay.timeIntervalSinceNow;

// 得到的是距离标准时间的时间间隔

NSLog(@"%.2f", interval/3600);

// 计算两个时间点的时间间隔

NSTimeInterval interval2 = [nextDay timeIntervalSinceDate:date1];

NSLog(@"%.2f", interval2/3600);

/*************************   时间戳  *****************************/

// 时间戳:一个时间点距离1970.1.1的时间间隔,这个时间以秒为单位,就叫做时间戳

NSTimeInterval interval3 = [date timeIntervalSince1970];

NSLog(@"%.2f", interval3);

// 将时间戳转换为时间对象

NSDate *date2 = [NSDate dateWithTimeIntervalSince1970:60];

NSLog(@"%@", date2);

// 获取北京时间

NSDate *date3 = [date dateByAddingTimeInterval:8*60*60];

NSLog(@"%@", date3);

// 例子: 计算一个当前时间和一个固定时间的差值,如果差值在60秒之内,则输出"刚刚", 如果差值在60~3600秒之内,则输出在"xx分钟之前",如果在3600~24*3600之内,则输出"xx小时之前",如果在24*3600秒之外输出输出固定时间

// 创建一个固定时间

NSDate *nowDate = [NSDate date];

NSDate *pastDate = [NSDate dateWithTimeIntervalSinceNow:-25*3600];

// 计算固定时间和当前时间的时间间隔

NSTimeInterval interval4 = [nowDate timeIntervalSinceDate:pastDate];

// 验证

NSLog(@"%.2f", interval4);

// 判断

if (interval4 <= 60) {

NSLog(@"刚刚");

} else if(interval4 <= 3600){

NSLog(@"%.f分钟之前",interval4 / 60);

}else if(interval4 <= 24 * 3600){

NSLog(@"%.f小时之前", interval4 / 3600);

}else{

NSLog(@"%@", pastDate);

}

/******************************   NSDateFormatter 日期格式类   **************************************/

// 继承自NSFormatter,主要作用将NSDate对象转为某种格式,然后以字符串的形式输出

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

// 设置日期格式中用到的字母的作用: y:年 M:月 d:日 H:时 m:分 s:秒

[formatter setDateFormat:@"yyyy年MM月dd号 HH时mm分ss秒"];

NSDate *date4 = [NSDate date];

// 将时间对象转为设定格式, 格式化的时候会自动加上距离零时区的时间间隔

NSString *dateString = [formatter stringFromDate:date4];

NSLog(@"%@", dateString);

// 反过来将时间字符串转换为NSDate对象

// 例如: @"2016年05月05号 21时50分20秒"

// 创建时间格式对象

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

[formatter1 setDateFormat:@"yyyy年MM月dd号 HH时mm分ss秒"];

// 准备时间字符串

NSString *dateString1 =  @"2016年05月05号 21时50分20秒";

// 使用时间格式对象借助时间字符串初始化时间对象

NSDate *date5 = [formatter1 dateFromString:dateString1];

// 转过来的时间会回归到零时区时间

NSLog(@"%@", date5);

// 如果想得到北京时间需要手动加上8小时

NSDate *date6 = [date5 dateByAddingTimeInterval:8*60*60];

NSLog(@"%@" ,date6);

/******************************   日期之间最常用的比较方法调用   **************************************/

// 与otherDate比较,相同返回YES

- (BOOL)isEqualToDate:(NSDate *)otherDate;

// 与anotherDate比较,返回较早的那个日期

- (NSDate *)earlierDate:(NSDate *)anotherDate;

// 与anotherDate比较,返回较晚的那个日期

- (NSDate *)laterDate:(NSDate *)anotherDate;

// 该方法用于排序时调用:

- (NSComparisonResult)compare:(NSDate *)other;

当实例保存的日期值与anotherDate相同时返回NSOrderedSame

当实例保存的日期值晚于anotherDate时返回NSOrderedDescending

当实例保存的日期值早于anotherDate时返回NSOrderedAscending

return 0;

}

NSDate时间类/NSDateFormatter日期格式类的更多相关文章

  1. java基础22 日期类、日历类、日期格式类

    package com.dhb.code; import java.text.ParseException; import java.text.SimpleDateFormat; import jav ...

  2. 常用类--Date日期类,SimpleDateFormat日期格式类,Calendar日历类,Math数学工具类,Random随机数类

    Date日期类 Date表示特定的时间,精确到毫秒; 构造方法: public Data() public Date(long date) 常用方法: public long getTime() pu ...

  3. Java的日期类和日期格式化类

    日期类: Date date = new Date(); // 获取当前的系统时间 2 System.out.println("年份:"+ date.getYear()); Cal ...

  4. day15--Java常用类之日期相关类

    Java常用类 3.日期相关类 3.1Date类 在标准Java类库中包含一个Date类,它的对象表示一个特定的瞬间,精确到毫秒.在网上商城下单时,在对报销单进行审核时,都需要获取当前的时间,通过Da ...

  5. Date类与日期格式

    Date类概述: 表示特定的瞬间,精确到毫秒. Date()分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒).Date(long date)分配 Date 对象并初始化此对象,以表 ...

  6. Oracle修改时间报:ORA-01830: 日期格式图片在转换整个输入字符串之前结束的解决办法

    1.错误原因: date类型不能包含秒以后的精度. 如日期:2010-01-01 20:02:20.0 解决方法:将日期秒以后的精度去除, to_date(substr(INVOICE_DATE,1, ...

  7. C#工具类之日期扩展类

    /// <summary> /// DateTimeHelper /// </summary> public static class DateTimeHelper { /// ...

  8. java 实体类中日期格式转换

    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss&quo ...

  9. Python 时间推进器-->在当前时间的基础上推前n天 | CST时间转化标准日期格式

    由于公司任务紧迫,好久没有在园子里写自己的心得了,今天偷个闲发表点简单的代码块,在开源的时代贡献微薄力量.话不多说,直接上代码块: ]) m = ]) d = ]) the_date = dateti ...

随机推荐

  1. Linux命令(002) -- free

    一.准备知识 Linux和Windows系统在内存管理机制方面有很大的不同.在Linux中经常发现空闲内存很少,似乎所有的内存都被系统占用了,表面感觉是内存不够用了,其实不然.这是Linux内存管理的 ...

  2. java学习笔记_网络

    客户端 import java.io.*; import java.net.*; public class DailyAdviceClient { public void go() { try { S ...

  3. node.js安装步骤

    首先这是node.js的官网:https://nodejs.org/en/ 截至2017年12月9日,node更新在8.9.3该版本,建议开发人员下载6.0以上版本,8以上不是很稳定!  如果有其他需 ...

  4. Microsoft SQL Server学习(一)--基本概念

    数据库的分类 关系型数据库 非关系型数据库 数据库的发展 数据都是以文件的形式存储在硬盘上FATFAT32NTFS LinuxEXT 数据库设计流程 文件系统缺陷 数据库的专业术语 数据库引擎服务 E ...

  5. Ubuntu14.4安装mysql

    一.安装 apt-get install mysql-server mysql-client 设置用户名和密码 二.检查 sudo service mysql restart 三.支持 1.apach ...

  6. 【转】SSH中 整合spring和proxool 连接池

    [摘要:比来做的一个项目中应用到了毗邻池技巧,大概我们人人比拟认识的开源毗邻池有dbcp,c3p0,proxool.对那三种毗邻池来讲,从机能战失足率来讲,proxool轻微比前两种好些.本日我首要简 ...

  7. eclipse版本和jdk的版本兼容问题

    eclipse也是有版本的,当版本过低时,无法兼容高版本的jdk 项目中用的是jdk1.8,但是低版本的eclipse只能选到jdk1.7,导致java文件在编译的过程中,不识别1.8版本jdk的语法 ...

  8. java关于工作,跳槽之总结

    关于工作中: 如何展示自己项目中的亮点,技术或者难点: 总结我的经历和技术倒是可以,但是我做的项目和我会的技术都很平庸,实在找不到亮点怎么办? 如果知道了你没有亮点,也就是知道了你自己欠缺什么,那么下 ...

  9. Python3爬取前程无忧数据分析工作并存储到MySQL

    1.导入包import requests #取数from lxml import etree #用xpath解析import pymysql #连接数据库import chardet #自动获取编码2 ...

  10. Learning opencv续不足(七)线图像的设计D

    因为线图像startline有了起点和终点,我们就可以用DDA法求出线上所有点,任意斜率直线通过四象限八区域查表法界定.我们只示范一个区域:函数为: public PointF DdaFindPtIm ...