• NSDate--日期格式


    日期格式:

    年:
    • y 将年份 (0-9) 显示为不带前导零的数字
    • yy 以带前导零的两位数字格式显示年份
    • yyy 以四位数字格式显示年份
    • yyyy 以四位数字格式显示年份
    月:
    • M 将月份显示为不带前导零的数字(如一月表示为 1)
    • MM 将月份显示为带前导零的数字(例如 01/12/01)
    • MMM 将月份显示为缩写形式(例如 Jan)
    • MMMM 将月份显示为完整月份名(例如 January)
      • 一月 Jan January
      • 二月 Feb February
      • 三月 Mar March
      • 四月 Apr April
      • 五月 May May
      • 六月 Jun June
      • 七月 Jul July
      • 八月 Aug August
      • 九月 Sep September
      • 十月 Oct October
      • 十一月 Nov November
      • 十二月 Dec December

    星期:
    • EEE 将日显示为缩写形式(例如 Sun)
    • EEEE 将日显示为全名(例如 Sunday)
      • 星期一 Mon Monday
      • 星期二 Tue Tuesday
      • 星期三 Wed Wednesday
      • 星期四 Thu Thursday
      • 星期五 Fri Friday
      • 星期六 Sat Saturday
      • 星期天 Sun Sunday

    日:
    • d 将日显示为不带前导零的数字(如 1)
    • dd 将日显示为带前导零的数字(如 01)

    时:
    • h 使用 12 小时制将小时显示为不带前导零的数字(例如 1:15:15 PM)
    • hh 使用 12 小时制将小时显示为带前导零的数字(例如 01:15:15 PM)
    • H 使用 24 小时制将小时显示为不带前导零的数字(例如 1:15:15)
    • HH 使用 24 小时制将小时显示为带前导零的数字(例如 01:15:15)

    分:
    • m 将分钟显示为不带前导零的数字(例如 12:1:15)
    • mm 将分钟显示为带前导零的数字(例如 12:01:15)

    秒:
    • s 将秒显示为不带前导零的数字(例如 12:15:5)
    • ss 将秒显示为带前导零的数字(例如 12:15:05)
    • f 显示秒的小数部分
    • ff 将精确显示到百分之一秒
    • ffff 将精确显示到万分之一秒
    • 用户定义格式中最多可使用七个 f 符号

    上下午:

    • t 使用 12 小时制
      • 中午之前任一小时显示大写的 A
      • 中午到 11:59 PM 之间的任一小时显示大写的 P
    • tt 对于使用 12 小时制的区域设置
      • 中午之前任一小时显示大写的 AM
      • 中午到 11:59 PM 之间的任一小时显示大写的 PM
    • 对于使用 24 小时制的区域设置,不显示任何字符

    时区:

    • z 显示不带前导零的时区偏移量
    • zz 显示带前导零的时区偏移量(例如 -08)
    • zzz 显示完整的时区偏移量(例如 -0800)

    纪元:

    • gg 显示时代/纪元字符串(例如 A.D.)

    日期需求:

    需求1.输出当前时间,例如2016-06-18 16:46:10 Saturday

        //1.用[NSDate date]可以获取系统当前时间
        NSDate * currentDate = [NSDate date];
        
        //2.实例化一个日期格式转换器
        NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
        
        //3.指定地区一定要指定,否则真机运行会有问题,统一用 en 即可
        dateFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en"];
        
        //4.设置输出格式
        dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss EEEE";
        
        //5.通过日期格式转换器将NSDate类转换成可以输出的字符串.
        NSString *currentDateStr = [dateFormatter stringFromDate:currentDate];
        NSLog(@"当前的时间: %@",currentDateStr);

    输出:

      

    需求2.用下面格式输出时间:

    • 刚刚(一分钟内)
    • X分钟前(一小时内)
    • X小时前(当天)
    • 昨天 HH:mm(昨天)
    • MM-dd HH:mm(一年内)
    • yyyy-MM-dd HH:mm(更早期)

    1.写了一个分类NSDate+Formatter 继承自NSDate.

    NSDate+Formatter.h 文件:

    #import <Foundation/Foundation.h>
    
    @interface NSDate (Formatter)
    
    //1.获取系统当前时间 格式:2016-06-20 10:22:11
    + (NSString *)dateCurrentTime;
    
    //2.将CurrentTime格式时间转换成系统默认的NSDate格式
    + (NSDate *)dateConvertIntoNSDateWithCurrentTime:(NSString *)timeString;
    
    //3.将数据库时间和当前时间相比,得出时间差,根据下面要求输出.
    /*
     刚刚(一分钟内)
     X分钟前(一小时内)
     X小时前(当天)
     昨天 HH:mm(昨天)
     MM-dd HH:mm(一年内)
     yyyy-MM-dd HH:mm(更早期)
     */
    + (NSString *)dateDescriptionWithDate:(NSDate *)date;
    @end

    NSDate+Formatter.m文件:

    //  NSDate+Formatter.m
    //  NSDate
    //
    //  Created by 贾永强 on 16/6/20.
    //  Copyright © 2016年 pandora. All rights reserved.
    //
    
    #import "NSDate+Formatter.h"
    
    @implementation NSDate (Formatter)
    
    //获取系统当前时间 格式:2016-06-20 10:22:11
    + (NSString *)dateCurrentTime{
        //1.用[NSDate date]可以获取系统当前时间
        
        NSDate * currentDate = [NSDate date];//系统默认格式:2016-06-20 02:22:11 +0000
        
        //2.实例化一个日期格式转换器
        NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
        
        //3.指定地区一定要指定,否则真机运行会有问题,统一用 en 即可
        dateFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en"];
        
        //4.设置输出格式
        dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
        
        //5.通过日期格式转换器将NSDate类转换成可以输出的字符串.
        NSString *currentDateStr = [dateFormatter stringFromDate:currentDate];
        
        return currentDateStr;
    }
    
    
    //将CurrentTime格式时间转换成系统默认的NSDate格式
    + (NSDate *)dateConvertIntoNSDateWithCurrentTime:(NSString *)timeString{
        NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
        dateFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en"];
        dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
        NSDate *date = [dateFormatter dateFromString:timeString];
        return date;
    }
    
    //将数据库时间和当前时间相比,得出时间差.
    + (NSString *)dateDescriptionWithDate:(NSDate *)date{
        
        NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
        dateFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en"];
        NSString *dateFormatterString = @" HH:mm";
        
        // NSCalendar日历类,提供了非常丰富的日期转换函数
        //1. 取出当前的日期
        NSCalendar *currentCalendar = [NSCalendar currentCalendar];
        
        //2. 用当前日期currentCalendar和传入的date比较,判断是否是今天
        if ([currentCalendar isDateInToday:date]) {
            
            // 使用日期和当前的系统时间进行比较,判断相差的秒数
            int seconds =  CFDateGetTimeIntervalSinceDate((CFDateRef)[NSDate date], (CFDateRef)date);
            if(seconds < 60){
                return @"刚刚";
            }else if (seconds < 3600){
                return [NSString stringWithFormat:@"%d 分钟前",seconds / 60];
            }else{
                return [NSString stringWithFormat:@"%d 小时前",seconds / 3600];
            }    
        }
        
        //3. 判断是否是昨天
        if ([currentCalendar isDateInYesterday:date]){
            NSString *tempString = @"昨天";
            dateFormatterString = [tempString stringByAppendingString:dateFormatterString];
            
        }else{
            //4.比较函数,返回完整的自然年数. 当期日期和传入日期比较,如果时间间隔<1年,返回0. 0年<时间间隔<2年,返回1 ....
            NSDateComponents *dateComponents = [currentCalendar components:NSCalendarUnitYear fromDate:date toDate:[NSDate date]options:(NSCalendarWrapComponents)];
            
            if (dateComponents.year == 0) {//时间间隔==0,说明是今年
                dateFormatterString = @"MM-dd HH:mm";
            }else{
                dateFormatterString = @"yyyy-MM-dd HH:mm:ss";
            }
        }
    
        dateFormatter.dateFormat =dateFormatterString;
        NSString *currentDateStr = [dateFormatter stringFromDate:date];
        return currentDateStr;
    }
    @end
  • 相关阅读:
    MySQLHA系列MHA(一)
    VS找不到约束
    Android开发被添加到桌面快捷方式
    Oracle查看和修改其最大的游标数
    Sde表结构分析
    SDE+ORACLE优化配置
    sqlplus常用命令
    ArcGIS 开发的一些知识学习点
    1.ireport基本使用
    java.net.ProtocolException: Exceeded stated content-length of: '13824' bytes
  • 原文地址:https://www.cnblogs.com/jiayongqiang/p/5596352.html
Copyright © 2020-2023  润新知