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 < ){
return @"刚刚";
}else if (seconds < ){
return [NSString stringWithFormat:@"%d 分钟前",seconds / ];
}else{
return [NSString stringWithFormat:@"%d 小时前",seconds / ];
}
} //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,说明是今年
dateFormatterString = @"MM-dd HH:mm";
}else{
dateFormatterString = @"yyyy-MM-dd HH:mm:ss";
}
} dateFormatter.dateFormat =dateFormatterString;
NSString *currentDateStr = [dateFormatter stringFromDate:date];
return currentDateStr;
}
@end
NSDate--日期格式的更多相关文章
- NSDate时间类/NSDateFormatter日期格式类
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { // NSDate 时间类 继承自N ...
- NSdate 时间格式
NSdate 时间格式 NSTimeInterval 时间间隔 基本单位 秒 NSDateFormatter 时间格式器 用于日期对象的格式化或字符串解析为日期对象 日期格式如下: y 年 M 年 ...
- ios日期格式转换
转自:http://blog.csdn.net/l_ch_g/article/details/8217725 1.如何如何将一个字符串如“ 20110826134106”装化为任意的日期时间格式,下面 ...
- Java与IOS日期格式
//JAVA日期格式 Date date = new Date(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM- ...
- 返回日期格式:2017-12-03T13:58:58.901Z,判断时间间隔 如 “刚刚”,“一分钟前”,“一小时前”等
后台返回的格式如下: 实现输出如下: 我的处理如下: // 处理数据 2017-11-28T02:41:09.487Z // 请求的时间戳.日期格式按照ISO8601标准表示,并需要使用UTC时间. ...
- SpringMVC初始化参数绑定--日期格式
一.初始化参数绑定[一种日期格式] 配置步骤: ①:在applicationcontext.xml中只需要配置一个包扫描器即可 <!-- 包扫描器 --> <context:comp ...
- AngularJS过滤器filter-时间日期格式-渲染日期格式-$filter
今天遇到了这些问题索性就 写篇文章吧 话不多说直接上栗子 不管任何是HTML格式还是JS格式必须要在 controller 里面写 // new Date() 获取当前时间 yyyy-MM-ddd ...
- ISO日期格式标准,浏览器到服务器到mysql中的时区
时区简单理解 https://zh.wikipedia.org/wiki/%E6%97%B6%E5%8C%BA 上面的链接是时区的wiki说明,下面说说我记住的部分: GMT时区是格林威治标准时间,我 ...
- JAVA 日期格式工具类DateUtil.java
DateUtil.java package pers.kangxu.datautils.utils; import java.text.SimpleDateFormat; import java.ut ...
- Oracle 获取当前日期及日期格式
http://blog.sina.com.cn/s/blog_6168ee920100l2ye.html Oracle 获取当前日期及日期格式 获取系统日期: SYSDATE() 格式化日期: ...
随机推荐
- 45. Scramble String
Scramble String Given a string s1, we may represent it as a binary tree by partitioning it to two no ...
- QTP实现功能测试的时候,当新版本的页面都改变了,应该如何解决
去更改对象仓库的属性和更改对象仓库.
- COSBench性能测试配置--一张图说明一切
COSBench性能测试配置--一张图说明一切: 测试配置,并发数,运行时间设置
- Oracle中快速查询和操作某个用户下的所有表数据信息
一.禁止所有的外键约束 在pl/sql developer下执行如下语句:SELECT 'ALTER TABLE ' || table_name || ' disable CONSTRAINT ' | ...
- sqlite支持各种交集差集 并集操作了
- uniq,sort,
语 法:uniq [-cdu][-f<栏位>][-s<字符位置>][-w<字符位置>][--help][--version][输入文件][输出文件] 补充说明: ...
- {CSDN}{英雄会}{砍树、石子游戏}
砍树 思路: 可以将题目意图转化为:给定一棵树,求其中最接近总权值一半的子树. DFS求每个节点的所有子节点的权值和,遍历每个节点,最接近总权值一半的即为答案.复杂度O(N). 石子游戏: 思路: 一 ...
- 面向服务体系架构(SOA)和数据仓库(DW)的思考基于 IBM 产品体系搭建基于 SOA 和 DW 的企业基础架构平台
面向服务体系架构(SOA)和数据仓库(DW)的思考 基于 IBM 产品体系搭建基于 SOA 和 DW 的企业基础架构平台 当前业界对面向服务体系架构(SOA)和数据仓库(Data Warehouse, ...
- static 变量
被static 修饰的变量全部称为静态变量.所有的静态变量全部存储在静态存储区.按静态变量定义的位置不同,又分为全局静态变量和局部静态变量. 1)全局静态变量 在全局变量的说明前加上static,就是 ...
- Xcode 字体 设置-- Xcode family没有显示的字体
前往文件夹 -> /Users/user/Library/Developer/Xcode/UserData/FontAndColorThemes/ (user改为自己的用户名) -----如果 ...