NSDate时间类/NSDateFormatter日期格式类
#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日期格式类的更多相关文章
- java基础22 日期类、日历类、日期格式类
package com.dhb.code; import java.text.ParseException; import java.text.SimpleDateFormat; import jav ...
- 常用类--Date日期类,SimpleDateFormat日期格式类,Calendar日历类,Math数学工具类,Random随机数类
Date日期类 Date表示特定的时间,精确到毫秒; 构造方法: public Data() public Date(long date) 常用方法: public long getTime() pu ...
- Java的日期类和日期格式化类
日期类: Date date = new Date(); // 获取当前的系统时间 2 System.out.println("年份:"+ date.getYear()); Cal ...
- day15--Java常用类之日期相关类
Java常用类 3.日期相关类 3.1Date类 在标准Java类库中包含一个Date类,它的对象表示一个特定的瞬间,精确到毫秒.在网上商城下单时,在对报销单进行审核时,都需要获取当前的时间,通过Da ...
- Date类与日期格式
Date类概述: 表示特定的瞬间,精确到毫秒. Date()分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒).Date(long date)分配 Date 对象并初始化此对象,以表 ...
- Oracle修改时间报:ORA-01830: 日期格式图片在转换整个输入字符串之前结束的解决办法
1.错误原因: date类型不能包含秒以后的精度. 如日期:2010-01-01 20:02:20.0 解决方法:将日期秒以后的精度去除, to_date(substr(INVOICE_DATE,1, ...
- C#工具类之日期扩展类
/// <summary> /// DateTimeHelper /// </summary> public static class DateTimeHelper { /// ...
- java 实体类中日期格式转换
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss&quo ...
- Python 时间推进器-->在当前时间的基础上推前n天 | CST时间转化标准日期格式
由于公司任务紧迫,好久没有在园子里写自己的心得了,今天偷个闲发表点简单的代码块,在开源的时代贡献微薄力量.话不多说,直接上代码块: ]) m = ]) d = ]) the_date = dateti ...
随机推荐
- python之 文件操作
一.初识文件操作 使用python来读写文件是非常简单的操作,我们使用open函数来打开一个文件,获取到 文件句柄,然后通过文件句柄就可以进行各种各样的操作,同过打开方式的不同能够执行的 操作也会有相 ...
- AndroidManifest.xml详解
一.关于AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文件.它位于整个项目的根目录,描述了package中暴露的组件(activiti ...
- UNIX环境高级编程--1
前期准备: 下载apue3源文件(从apuebook.com上),然后编译(make)之后,得到libapue.a动态链接文件(.o 就相当于windows里的obj文件 .a 是好多个.o合在一起, ...
- Miller Rabin 大素数测试
PS:本人第一次写随笔,写的不好请见谅. 接触MillerRabin算法大概是一年前,看到这个算法首先得为它的神奇之处大为赞叹,竟然可以通过几次随机数据的猜测就能判断出这数是否是素数,虽然说是有误差率 ...
- Javascript实现导航锚点滚动效果实例
本篇文章主要介绍了Javascript实现页面滚动时导航智能定位,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 常见的开发页面中可能会有这么一个需求,页面中会有多个模块,每个模块对应一个导航,当页 ...
- JS——dom
节点的获取 <script> var div = document.getElementById("box");//返回指定标签 var div = document. ...
- SQL基本操作——declare if lese while
declare --第一种 declare @i int set @i= (select COUNT(*) from t8) select @i --第二种 declare @i int select ...
- servlet-响应信息的content-Type作用
package servlet; import java.io.File; import java.io.FileInputStream; import java.io.IOException; im ...
- nagios 安装pnp4nagios插件
Naigos install pnp4nagios 绘图插件 原文地址:http://www.cnblogs.com/caoguo/p/5022230.html [root@Cagios ~]# yu ...
- webstrom常用键
常用快捷键—Webstorm入门指南 提高代码编写效率,离不开快捷键的使用,Webstorm拥有丰富的代码快速编辑功能,你可以自由配置功能快捷键. 快捷键配置 点击“File”-> “setti ...