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() 格式化日期: ...
随机推荐
- 字符串--java中判断字符串是否为数字的方法的几种方法?
ava中判断字符串是否为数字的方法: 1.用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = 0; i < ...
- Android UI 绘制过程浅析(二)onMeasure过程
前言 View的绘制过程分为 measure.layout.draw三个步骤,接下来对这三个步骤逐一进行研究. measure方法的签名 public final void measure(int w ...
- oracle10g配置小记
因对接HIS系统,对方提供了视图.故此我拿起多年不用的ORACLE. 初始安装一切正常,然后打开Net Configuration Assistant配置监听程序. 接着配置 本地NET服务名配置 打 ...
- 使用GDB进行调试
下面是几篇非常好的GDB使用指南: http://www.cs.cmu.edu/~gilpin/tutorial/ http://oss.org.cn/ossdocs/gnu/linux/gdb.ht ...
- iperf3实践
The basic commands are the same for iperf and iperf3: SAMPLE IPERF/IPERF3 COMMANDS Server: iperf/ipe ...
- HDOJ(1010)DFS+剪枝
Tempter of the Bone http://acm.hdu.edu.cn/showproblem.php?pid=1010 #include <stdio.h> #include ...
- 循序渐进之Spring AOP(5) - 创建切面
在掌握了可用的增强后,接下来要做的就是精确的描述切点.前面的示例都是指定一个目标类并把增强织入到所有方法中,实际开发显然会有更精细的筛选需求,比如对所有类中名称以test结尾的方法加入监控执行时间,或 ...
- MySQL Innodb的两种表空间方式
要说表空间,MySQL的表空间管理远远说不上完善.换句话说,事实上MySQL根本没有真正意义上的表空间管理.MySQL的Innodb包含两种表空间文件模式,默认的共享表空间和每个表分离的独立表空间.只 ...
- spring集成freemaker 制作短信模板
1.配置configure的Bean,Bean中指定了模板文件的路径和刷新时间等配置. <!-- 配置freeMarkerConfigurer进行属性值的注入 --> <bean i ...
- 【python】密码生成器
#!/usr/bin/env python#-*- coding:UTF-8 -*- import random #导入random模块import string #导入string模块 sal ...