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;

}

时间: 2024-12-26 20:29:17

OC - 时间日期类NSDate的相关文章

时间类和日期类派生出时间日期类

今天再写一个多重继承的应用实例,时间类和日期类派生出时间日期类 程序代码 #include <iostream> using namespace std; class Date//日期类 { public: //构造函数 Date(int y = 0, int m = 0, int d = 0); //设置日期 void SetDate(int y,int m,int d); //打印日期 void PrintDate() { cout<<year<<"年&q

java — 时间日期类

java -- 时间日期类的简单操作 一.java.util.Date类 获取系统时间 1 public static void main(String[] args) { 2 // 使用Date获取系统时间 3 Date date = new Date(); 4 System.out.println(date); 5 } 输出结果:Sun Jan 13 12:30:30 CST 2019 输出结果不符合中国人的阅读习惯,我们得使用 SimpleDateFormat类 进行一些操作,按照我们自己

Java8 时间日期类操作

Java8 时间日期类操作 Java8的时间类有两个重要的特性 线程安全 不可变类,返回的都是新的对象 显然,该特性解决了原来java.util.Date类与SimpleDateFormat线程不安全的问题.同时Java8的时间类提供了诸多内置方法,方便了对时间进行相应的操作. 上图为Java8时间类的覆盖范围 相关的类有 LocalDate LocalTime LocalDateTime ZoneId ZonedDateTime Instant Instant类 Instant类用来表示格林威

JAVA-基础-常用API(时间日期类,Date,Dateformat,Calendar)

Date 类 Date 表示特定的瞬间,精确到毫秒. 毫秒概念:1000毫秒=1秒 毫秒的0点: System.currentTimeMillis()  返回值long类型参数 用于获取当前日期的毫秒值 时间的原点:公元1970年 一月一日,午夜0:00:00 对应的毫秒值就是0 注意:时间和日期的计算,必须依赖毫秒值 继续查阅Date类的描述,发现Date拥有多个构造函数,只是部分已经过时,但是其中有未过时的构造函数可以把毫秒值转成日期对象. String ToString()   把此Dat

时间日期类--显示时间

<HTML> <HEAD> <TITLE>时间日期篇--显示日期</TITLE> </HEAD> <BODY bgcolor="#fef4d2" background="../images/background3.JPG" > <br> <br> <center> <font color="ffaafa">   <h2&g

Java 时间日期类

1.Date 1 package demo03; 2 3 import java.util.Date; 4 5 public class DateDemo { 6 public static void main(String[] args) { 7 //无参构造方法, 用来创建当前日期时间的Date对象 8 Date d = new Date(); 9 System.out.println(d); 10 11 //long型参数作为构造方法, 用来创建指定时间的日期对象, 参数表示毫秒数 12

Object类.时间日期类.System类.Stringbuilder类.包装类

Object类 java.lang.Object类是java语言中的根类,即所有类的父类.它中描述的所有方法都可以使用.在对象实例化的时候,最终找的父类就是Object. 如果一个类没有特别指定父类,那么默认则继承自Object类.例如: 自己随便定义的一个类: public void Demo{ //......... } 根据JDK源码和Object类的API文档,Object类当中包含的方法有11个,然后,我只挑选了两个来做重点介绍: public String toString():返回

Centos7——9.实用指令(时间日期类)

目录 1. date 指令-显示当前日期 2. date 指令-设置日期(重点) 3. cal 指令 1. date 指令-显示当前日期 基本语法 1. date (功能描述:显示当前时间) 2. date "+%Y" (功能描述:显示当前年份) 3. date "+%m" (功能描述:显示当前月份) 4. date "+%d" (功能描述:显示当前是哪一天) 5. date "+%Y-%m-%d- %H:%M:%S" (功能

Java中的时间日期处理

程序就是输入——>处理——>输出.对数据的处理是程序员需要着重注意的地方,快速.高效的对数据进行处理时我们的追求.其中,时间日期的处理又尤为重要和平凡,此次,我将把Java中的时间日期处理方式进行简单的解析,为自己以后的学习做一个备忘,也为初学者做一个借鉴. 时间,英文Time:日期,英文Date:日历,英文Calendar.Java中注重语义化,也是用以上的名称对时间日期函数和相关类进行命名. 我们将以Java自带的时间日期类和其中的处理函数进行分析. 一.与时间日期有关的类. java.u