必须知道的内容

G: 公元时代,例如AD公元

    yy: 年的后2位

    yyyy: 完整年

    MM: 月,显示为1-12

    MMM: 月,显示为英文月份简写,如 Jan

    MMMM: 月,显示为英文月份全称,如 Janualy

    dd: 日,2位数表示,如02

    d: 日,1-2位显示,如 2

    EEE: 简写星期几,如Sun

    EEEE: 全写星期几,如Sunday

    aa: 上下午,AM/PM(xcode8之前aa表示上下午,之后aa表示am/pm,官方代码看不到,做个提醒,如果你是xcode8之前的编辑器,最好把am/pm转成上下午做,网上有传tt可以代表am/pm,楼主亲测,无效)

    H: 时,24小时制,0-23

    K:时,12小时制,0-11

    m: 分,1-2位

    mm: 分,2位

    s: 秒,1-2位

    ss: 秒,2位

    S: 毫秒

1.date转string

NSDate *date=[NSDate date];

NSLog(@"%@",date);//2015-11-20 00:37:40 +0000

NSDateFormatter *dateFormatter=[[NSDateFormatter alloc]init];//创建一个日期格式化器

dateFormatter.dateFormat=@"yyyy-MM-dd hh:mm:ss";//指定转date得日期格式化形式

NSLog(@"%@",[dateFormatter stringFromDate:date]);//2015-11-20 08:24:04

 dateFormatter.dateFormat=@"yyyy-MM-dd";

NSLog(@"%@",[dateFormatter stringFromDate:date]);//2015-11-20

 dateFormatter.dateFormat=@"yyyy-MM-dd eeee aa HH:mm:ss";

 NSLog(@"%@",[dateFormatter stringFromDate:date]);//2015-11-20 Friday AM 08:30:28

dateFormatter.dateFormat=@"yyyy-MM-dd hh:mm:ss z";

NSLog(@"%@",[dateFormatter stringFromDate:date]);//2015-11-20 08:42:22 GMT+8

其实date转string只需要根据格式来就可以了,但是string转date需要注意事项

2.string转date

 NSString *dateStr=@"2012-5-4 4:34:23";

dateFormatter.dateFormat=@"yyyy-mm-dd hh:mm:ss";

//输出:2012-05-03 20:34:23 +0000

/*

转化的类型必须与dateFormat保持一致

2012-->y

5->m

4->d

*/

NSString *dateStr=@"2012-5-4 4:34:23";

dateFormatter.dateFormat=@"yyyy-mm-dd "//后面的hh:mm:ss不写可以吗?答案不写不可以

//dateFormatter.dateFormat=@"yyyy-MM-dd hh:mm:ss";//转化格式

 NSLog(@"%@",[dateFormatter dateFromString:dateStr]);

这里写一个java代码改成OC的封装类

DateService
DateService.h文件:
#import <Foundation/Foundation.h>
#define PATTERN_STANDARD08W @"yyyyMMdd"
#define PATTERN_STANDARD12W @"yyyyMMddHHmm"
#define PATTERN_STANDARD14W @"yyyyMMddHHmmss"
#define PATTERN_STANDARD17W @"yyyyMMddHHmmssSSS"
#define PATTERN_STANDARD10H @"yyyy-MM-dd"
#define PATTERN_STANDARD16H @"yyyy-MM-dd HH:mm"
#define PATTERN_STANDARD19H @"yyyy-MM-dd HH:mm:ss"
#define PATTERN_STANDARD10X @"yyyy/MM/dd"
#define PATTERN_STANDARD16X @"yyyy/MM/dd HH:mm"
#define PATTERN_STANDARD19X @"yyyy/MM/dd HH:mm:ss"
#define PATTERN_STANDARD20H @"HH:mm"
#define PATTERN_STANDARD21H @"HH"
@interface DateService : NSObject /**
给日期返回固定格式的字符串
*/
+(NSString *)date2StringWithDate:(NSDate *)date pattern:(NSString *)pattern;
/**
给字符串返回日期
*/
+(NSDate *)string2DateWithString:(NSString *)strDate pattern:(NSString *)pattern;
/**
获取指定格式的当前日期
*/
+(NSString *)getCurrentTimeWithPattern:(NSString *)pattern;
/**
获取当前时间 mm:ss
*/
+(NSString *)getCurrentTime;
/**
获取当前时间过后多少秒
*/
+(NSString *)getBeforeDateWithM:(double)m;
@end

.m

#import "DateService.h"

@implementation DateService
+(NSString *)date2StringWithDate:(NSDate *)date pattern:(NSString *)pattern{
if(!date){
return @"";
}
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
formatter.dateFormat = pattern;
return [formatter stringFromDate:date]; }
+(NSDate *)string2DateWithString:(NSString *)strDate pattern:(NSString *)pattern{
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
formatter.dateFormat = pattern;
return [formatter dateFromString:strDate];
}
+(NSString *)getCurrentTimeWithPattern:(NSString *)pattern{
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
formatter.dateFormat = pattern;
formatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:8 * 3600];
return [formatter stringFromDate:[NSDate date]]; }
+(NSString *)getCurrentTime{
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
formatter.dateFormat = @"HH:mm";
formatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:8 * 3600];
return [formatter stringFromDate:[NSDate date]];
}
+(NSString *)getBeforeDateWithM:(double)m{
NSDate *date = [NSDate dateWithTimeIntervalSinceNow:m];
return [self date2StringWithDate:date pattern:PATTERN_STANDARD10H];;
}
@end

iOS中Date和NString的相互转换的更多相关文章

  1. iOS中date和string的相互转换

    必须知道的内容 G: 公元时代,例如AD公元     yy: 年的后2位     yyyy: 完整年     MM: 月,显示为1-12     MMM: 月,显示为英文月份简写,如 Jan      ...

  2. Java中Date与String的相互转换

    我们在注册网站的时候,往往需要填写个人信息,如姓名,年龄,出生日期等,在页面上的出生日期的值传递到后台的时候是一个字符串,而我们存入数据库的时候确需要一个日期类型,反过来,在页面上显示的时候,需要从数 ...

  3. Java8中 Date和LocalDateTime的相互转换

    一.在Java 8中将Date转换为LocalDateTime 方法1: 将Date转换为LocalDatetime,我们可以使用以下方法: 1.从日期获取ZonedDateTime并使用其方法toL ...

  4. 谨记:new Date()在IOS中的坑

    第一次遇到,记录一下 要创建一个指定时间的new Date对象时,通常的做法是: new Date("2018-04-27 11:11");然后就可以根据这个获取年月日等信息 这种 ...

  5. ios 中不new Date 的格式 不支持年月日 以‘-’ 分割的格式

    new Date("2018-1-5") 在 ios 中显示 invalid date - 换做 / 则可以顺利显示 new Date("2018/1/5")

  6. java中XMLGregorianCalendar类型和Date类型之间的相互转换

    import java.text.SimpleDateFormat;import java.util.Date;import java.util.GregorianCalendar;import ja ...

  7. ios中常见数据存储方式以及SQLite常用的语句

    在iOS中,根据不同的需求对应的有多种数据存储方式: 1.NSUserdefaults  将数据存储到沙盒中(library),方便易用,但是只能存储系统提供的数据类型(plist),不能存储自定义的 ...

  8. iOS中JSONModel的使用

    iOS中JSONModel的使用   流弊的JSON数据模型框架 https://github.com/jsonmodel/jsonmodel 版本 1.3.0 如果你喜欢JSONModel,并且使用 ...

  9. iOS中几种定时器

    在软件开发过程中,我们常常需要在某个时间后执行某个方法,或者是按照某个周期一直执行某个方法.在这个时候,我们就需要用到定时器. iOS中定时器NSTimer的使用   1.初始化 + (NSTimer ...

随机推荐

  1. Android SAX、DOM、Pull解析xml文件剖析与案例讲解

    XML介绍 XML(Extensible Markup Language) 即可扩展标记语言,与HTML一样,都是SGML(Standard Generalized Markup Language,标 ...

  2. Windows平台下PHP7添加Sqlserver扩展

    1.7.0.x 7.0.x的扩展下载地址: Microsoft Drivers for PHP for SQL Server  https://www.microsoft.com/en-us/down ...

  3. openstack-networking-neutron(一)---端到端和点到点的理解

    本博客已经添加"打赏"功能,"打赏"位置位于右边栏红色框中,感谢您赞助的咖啡. ====本文目的===== 理解搞清楚两个概念: 1.端到端    2.点到点  ...

  4. 移动端前端框架UI库

    移动端前端框架UI库(Frozen UI.WeUI.SUI Mobile) Frozen UI 自述:简单易用,轻量快捷,为移动端服务的前端框架. 主页:http://frozenui.github. ...

  5. php底层变量分析

    <?php //数组引用 $arr = array('a','b','c','d'); $x = & $arr[1]; $tmp = $arr; $arr[1] = 'e'; echo ...

  6. Android 源码下载,国内 镜像

    AOSP(Android) 镜像使用帮助 https://lug.ustc.edu.cn/wiki/mirrors/help/aosp 首先下载 repo 工具. mkdir ~/bin PATH=~ ...

  7. AngularJS初始(一)

    什么是AngularJs? angularjs是一个为动态WEB应用设计的结构框架.它能让你使用HTML作为模板语言,通过扩展HTML的语法,让你能更清楚.简洁地构建你的应用组件.它的创新点在于,利用 ...

  8. iOS - 原生的CIFilter生成二维码和条形码

    使用CIFilter可以不引入任何第三方库,就可以生成想要的二维码和条形码,今天简单的介绍一下使用CIFilter生成二维码和条形码.系统CIFilter生成的二维码和条形码的大小有时并不能满足需求, ...

  9. Ubuntu16.04双网卡主备配置

    前几日写了一篇Ubuntu14.04双网卡主备配置,没成想变化总是这么快,今日安装某软件,提示最匹配的ubuntu版本是16.04,作为一个码农能有什么办法,只能不断去适应变化.拥抱变化. 首先16. ...

  10. windows下java开发资料汇总

    开发环境搭建:   (1) java开发环境配置    (2) maven环境快速搭建        项目部署:   (1) Eclipse中项目部署方法   (2) 使用Eclipse构建Maven ...