必须知道的内容

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. PHP MYSQL 分表方法

    function get_hash_table($table,$uid){ $_str = crc32($uid); if($_str < 0 ){ $ret = "0".s ...

  2. 【架构师之路】 LVS+Keepalived实现高可用负载均衡

    一.原理        1.概要介绍        如果将TCP/IP划分为5层,则Keepalived就是一个类似于3~5层交换机制的软件,具有3~5层交换功能,其主要作用是检测web服务器的状态, ...

  3. RH318之域控服务器

    Windows2012域控服务器 一.安装域服务及DNS 1.配置静态IP 2.点击左下角 3.进入--->服务器管理器 4.点击角色和功能 勾选Active Directory域服务与DNS服 ...

  4. DELPHIER,正转向PYTHON了

    用了10多年的DELPHI ,现在准备学PYTHON了, 理由是: 1)现在是云计算时代了,需要学习一门适应该时代的语言,研究了很久,PYTHON是最佳选择,排除了PHP,PERL,RUBY等,至于G ...

  5. Esper学习之十一:EPL语法(七)

    上一篇说到了EPL如何访问关系型数据库这种数据源,实际上别的数据源,比如:webservice.分布式缓存.非关系型数据库等等,Esper提供了统一的数据访问接口.然后今天会讲解如何创建另外一种事件类 ...

  6. Esper学习之二:事件类型

    Esper对事件有特殊的数据结构约定.能处理的事件结构有:POJO,java.util.Map,Object Array,XML 1.POJO 对于POJO,Esper要求对每一个私有属性要有gett ...

  7. 【Shell脚本编程系列】知识储备以及建立规范的脚本

    前言 学习shell脚本编程需要的知识储备: vi/vim编辑器命令 vimrc设置要熟练 基础命令,100多个要熟练 基础和常用的网络服务命令要会:nfs . rsync. inotify . la ...

  8. sencha touch Carousel 自动切换

    代码是在网上找的,忘记原出处了 /** * 跑马灯自动切换 */ Ext.define('ux.RotatingCarousel', { extend: 'Ext.carousel.Carousel' ...

  9. 使用 udev 管理 Linux 设备文件

    本文以通俗的方法阐述 udev 及相关术语的概念.udev 的配置文件和规则文件,然后以 Red Hat Enterprise Server 为平台演示一些管理设备文件和查询设备信息的实例.本文会使那 ...

  10. Java环境变量配置错误

    1,由于Java的环境变量配置错误,导致用到Java的编译过程中出现错误: 改正办法: wget http://download.oracle.com/otn-pub/java/jdk/8u181-b ...