必须知道的内容

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. codeforces水题100道 第十九题 Codeforces Round #109 (Div. 2) A. I_love_%username% (brute force)

    题目链接:http://www.codeforces.com/problemset/problem/155/A题意:找到当前最大值或者最小值出现的次数.“当前”的意思差不多是a[i]大于所有a[j]( ...

  2. React Native 开发工具篇

    正文 概述:开发RN的工具有很多,选择性也比较多,比如Facebook专门为React开发的IDE:Nuclide,还有做前端比较熟悉的WebStorm.Sublime Text 3.VS Code等 ...

  3. c++ 纯虚析构函数

    ; 这就是一个纯虚析构函数,这种定义是允许的. 一般纯虚函数都不允许有实体,但是因为析构一个类的过程中会把所有的父类全析构了,所以每个类必有一个析构函数. 所以.纯虚析构函数需要提供函数的实现,而一般 ...

  4. Entity Framework6的在线下载安装

    Entity Framework6的在线下载安装 Entity Framework 简单介绍: 看名字就知道肯定是关于数据模型的…… Entity Framework:微软官方提供的ORM()工具,O ...

  5. java(9)并发编程

    整理自<java 并发编程的艺术> 1. 上下文切换 即使是单核处理器也支持多线程执行代码,CPU通过给每个线程分配CPU时间片来实现这个机制.时间片是CPU分配给各个线程的时间,因为时间 ...

  6. LeetCode 27 Remove Element (移除数组中指定元素)

    题目链接: https://leetcode.com/problems/remove-element/?tab=Description   Problem : 移除数组中给定target的元素,返回剩 ...

  7. 完全卸载Oracle数据库软件

    软件环境: 1.Windows xp+ORACLE 8.1.7 2.ORACLE安装路径为:C:\ORACLE 实现方法: 1. 开始->设置->控制面板->管理工具->服务 ...

  8. 记录一次OOM排查经历(一)

    一.经历概要 程序里有个跑数据的job,这个job的主要功能是往数据库写假数据. 既需要跑历史数据(传给job的日期是过去的时间),也需要能够上线后,实时跑(十秒钟触发一次,传入触发时的当前时间). ...

  9. JiraRemoteUserAuth

    配置Jira7.x版本使用REMOTE_USER的HTTP Header方式登录: 前提是已经安装好了JIRA,并且前端使用apache或者nginx拦截对应的地址进行认证,认证之后访问对应的应用的时 ...

  10. html to openxml

    Html to OpenXml How to start ? Create a new console application. Add a reference to DocumentFormat.O ...