【OC加强】NSDate的用法——日期时间在实际开发中比较实用

(1)日期的最主要知识点就是日期转换成字符串格式化输出,相反就是按照某个格式把字符串转换成日期。

(2)一般关于时区的设置很少用到,只要了解即可。

#import <Foundation/Foundation.h>

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

    @autoreleasepool {
        //获取当前时间,日期正确,时间错误,是因为时区的设置问题,但是格式化输出用HH:mm:ss貌似是正常的
        NSDate *date1=[NSDate date];
        NSLog(@"%@",date1);
        //想获得昨天此时此刻的时间,则需要用到减法,先把秒算出来,然后减去即可,不多addTimeInterval方法已经被禁止使用了
        //NSTimeInterval *oneDay=24*60*60;
        //NSDate *yesterday1=[date1 addTimeInterval:-oneDay];

        //比较两个时间
        NSDate *date2=[NSDate date];
        [date1 isEqualToDate:date2];

        //取时间较早的那个
        [date2 earlierDate:date1];

        //取较晚的那个
        [date2 laterDate:date1];

        //格式化日期,其实就是利用一个日期格式化对象把日期转换成字符串了
        //先定义一个NSDateFormatter对象,然后给这个格式对象定义成自己想要的格式,然后用它去转化其他日期即可
        NSDateFormatter *format1=[[NSDateFormatter alloc]init];
        [format1 setDateFormat:@"yyyy/MM/dd HH:mm:ss"];
        NSString *str1=[format1 stringFromDate:date1];
        NSLog(@"%@",str1);

        //把字符串转换成日期
        //和上边类似,仍然需要日期格式化对象,但是调用的方法从stringFromDate变成
        //因为时区设置的问题,这个日期被减去了一天
        NSDateFormatter *format2=[[NSDateFormatter alloc]init];
        [format2 setDateFormat:@"yyyy/MM/dd"];
        NSString *[email protected]"2014/10/11";
        NSLog(@"%@",[format2 dateFromString:str2]);

        //直接输出当前时间date1时又时区错误。而用格式化后就正常了
        NSDateFormatter *format3=[[NSDateFormatter alloc]init];
        [format3 setDateFormat:@"yyyy/MM/dd HH:mm:ss"];
        //以下语句可以省略,如果把GTM变成UTC的话,就会存在时差问题,到底是哪一种,届时根据实际情况修改
        [format3 setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GTM"]];
        NSLog(@"%@",[format3 stringFromDate:date1]);
        //当然,我们可以手动设置时区
    }
    return 0;
}
时间: 2024-08-24 21:10:22

【OC加强】NSDate的用法——日期时间在实际开发中比较实用的相关文章

Java日期时间API系列8-----Jdk8中java.time包中的新的日期时间API类的LocalDate源码分析

目录 0.前言 1.TemporalAccessor源码 2.Temporal源码 3.TemporalAdjuster源码 4.ChronoLocalDate源码 5.LocalDate源码 6.总结 0.前言 通过前面Java日期时间API系列6-----Jdk8中java.time包中的新的日期时间API类中主要的类关系简图如下: 可以看出主要的LocalDate, LocalTime, LocalDateTime, Instant都是实现相同的接口,这里以LocalDate为例分析jav

Java日期时间API系列11-----Jdk8中java.time包中的新的日期时间API类,使用java8日期时间API重写农历LunarDate

通过Java日期时间API系列7-----Jdk8中java.time包中的新的日期时间API类的优点,java8具有很多优点,现在网上查到的农历转换工具类都是基于jdk7及以前的类写的,下面使用java新的日期时间API重写农历LunarDate. package com.xkzhangsan.time; import java.time.Instant; import java.time.LocalDate; import java.time.LocalDateTime; import ja

Java日期时间API系列17-----Jdk8中java.time包中的新的日期时间API类,java日期计算4,2个日期对比,获取相差年月日部分属性和相差总的天时分秒毫秒纳秒等

通过Java日期时间API系列9-----Jdk8中java.time包中的新的日期时间API类的Period和Duration的区别 ,可以看出java8设计非常好,新增了Period和Duration类,专用于对比2个时间场景: Period,可以获取2个时间相差的年月日的属性. Duration,可以获取2个时间相差总的天时分秒毫秒纳秒. 下面应用: /** * 获取2个日期的相差年月天的年数部分 * @param startInclusive * @param endExclusive

Java日期时间API系列20-----Jdk8中java.time包中的新的日期时间API类,ZoneId时区ID大全等。

Java日期时间API系列19-----Jdk8中java.time包中的新的日期时间API类,ZonedDateTime与ZoneId和LocalDateTime的关系,ZonedDateTime格式化和时区转换等.中已经对ZoneId说明,并列出了常用时区ID信息. 并且通过 java.time.ZoneId.getAvailableZoneIds()获取到所有可用时区ID. 1.测试代码 /** * 获取可用时区ID */ @Test public void getAvailableZon

Java日期时间API系列19-----Jdk8中java.time包中的新的日期时间API类,ZonedDateTime与ZoneId和LocalDateTime的关系,ZonedDateTime格式化和时区转换等。

通过Java日期时间API系列6-----Jdk8中java.time包中的新的日期时间API类中时间范围示意图:可以很清晰的看出ZonedDateTime相当于LocalDateTime+ZoneId. ZonedDateTime是用来处理时区相关的时间,它的各种计算都离不开ZoneId.先看ZoneId. 1. ZoneId 为时区ID,比如Europe/Paris,表示欧洲巴黎时区 1.1 时区相关知识,时区,UTC时间,GMT时间,Unix时间戳 时区 地球自西向东旋转,东边比西边先看到

js日期时间函数(经典+完善+实用)(转采自 :bicabo)

日期时间脚本库方法列表 Date.prototype.isLeapYear 判断闰年Date.prototype.Format 日期格式化Date.prototype.DateAdd 日期计算Date.prototype.DateDiff 比较日期差Date.prototype.toString 日期转字符串Date.prototype.toArray 日期分割为数组Date.prototype.DatePart 取日期的部分信息Date.prototype.MaxDayOfDate 取日期所在

Java日期时间API系列7-----Jdk8中java.time包中的新的日期时间API类的特点

1.不变性 新的日期/时间API中,所有的类都是不可变的,这对多线程环境有好处. 比如:LocalDateTime 2.关注点分离 新的API将人可读的日期时间和机器时间(unix timestamp)明确分离,它为日期(Date).时间(Time).日期时间(DateTime).时间戳(unix timestamp)以及时区定义了不同的类. 不同时间分解成了各个类,比如:LocalDate, LocalTime, LocalDateTime, Instant,Year,Month,YearMo

Java日期时间API系列10-----Jdk8中java.time包中的新的日期时间API类的DateTimeFormatter

1.DateTimeFormatter final修饰,线程安全,用于打印和解析日期-时间对象的格式化程序. 创建DateTimeFormatter: DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault()); 2.格式化日期 例如:LocalDateTime LocalDateTime localDa

Java日期时间API系列13-----Jdk8中java.time包中的新的日期时间API类,时间类转换,Date转LocalDateTime,LocalDateTime转Date

从前面的系列博客中可以看出Jdk8中java.time包中的新的日期时间API类设计的很好,但Date由于使用仍非常广泛,这就涉及到Date转LocalDateTime,LocalDateTime转Date.下面是时间类互相转换大全,包含Instant.LocalDate.LocalDateTime.LocalTime和Date的相互转换,下面是一个工具类,仅供参考: package com.xkzhangsan.time.converter; import java.time.Instant;