IOS-时间与字符串互相转换


https://blog.csdn.net/u012605210/article/details/37879511

有时会遇到这样的问题,需要把时间和时间戳互相转换

比如把当前时间转换成 “20140716155436”这样的格式

或者是把“20140716155436”转换成“2014-07-16 15:54:36”

首先来第一个:

当前时间转换成 “20140716155436”这样的格式

 

 ///////////////////////////////

    //获取当前时间

    NSDate * today = [NSDate date];

    NSLog(@"%@",today);

打印出来是“2014-07-16 07:54:36 +0000”

很奇怪?现在明明是2014-07-16 15:54:36啊

因为存在不同时区,系统默认格林尼治时间

所以就要转换时间格式了

    //转换时间格式

    NSDateFormatter *df = [[NSDateFormatter alloc] init];//格式化

    [df setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

    NSString * s1 = [df stringFromDate:today];

    NSLog(@" s1s1s1s%@",s1);

打印出来是“2014-07-16 15:54:36”

现在已经获取到当前的时间

这样还没有完呢,需要转换成一个字符串,类似“20140716052021”的时间戳

 

    NSDate * date = [df dateFromString:s1];

    //转换时间格式

    NSDateFormatter *df2 = [[NSDateFormatter alloc] init];//格式化

    [df2 setDateFormat:@"yyyyMMddHHmmss"];

    [df2 setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"]];

    NSLog(@"%@",[df2 stringFromDate:date]);

打印出来是“20140716155436”
 

接下来就是第二个:

把“20140716155436”转换成“2014-07-16 15:54:36”

首先要把20140716155436转换成时间格式

 

    //转换时间格式

    NSDateFormatter *df = [[NSDateFormatter alloc] init];//格式化

    [df setDateFormat:@"yyyyMMddHHmmss"];

    [df setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"] ];

    NSDate *date =[[NSDate alloc]init];

    date =[df dateFromString:bill_timeStr];

    str = [NSString stringWithFormat:@"%@",date];

str的结果是“2014-07-16 07:54:36 +0000”

这时候就需要再转一次

    //

    NSDateFormatter * df2 = [[NSDateFormatter alloc] init];

    [df2 setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

    NSString * str1 = [df2 stringFromDate:date];

 str1的结果是“2014-07-16 15:54:36”

ok,大功告成

 

例1、 从服务器段获取到的字符串转化为时间如:转化1416882712000

//网络请求获取的数据

NSString *time = [NSStringstringWithFormat:@%@,[[dateListobjectAtIndex:indexPath.row]gradeDate]];

NSInteger num = [time integerValue]/1000;(重点)

NSDateFormatter *formatter = [[[NSDateFormatteralloc]init]autorelease];

[formatter setDateStyle:NSDateFormatterMediumStyle];

[formatter setTimeStyle:NSDateFormatterShortStyle];

[formatter setDateFormat:@YYYY-MM-dd];

NSDate*confromTimesp = [NSDatedateWithTimeIntervalSince1970:num];NSString*confromTimespStr = [formatterstringFromDate:confromTimesp];

cell.DateContent.text = confromTimespStr;

转化之后结果为:2014-11-25

 

例2、如何如何将一个字符串如“ 20110826134106”装化为任意的日期时间格式,下面列举两种类型

NSString*string = @20110826134106;

NSDateFormatter *inputFormatter= [[[NSDateFormatter alloc] init] autorelease];

[inputFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@en_US] autorelease]];

[inputFormatter setDateFormat:@yyyyMMddHHmmss];

NSDate*inputDate = [inputFormatter dateFromString:string];

NSLog(@date= %@, inputDate);

 

NSDateFormatter *outputFormatter= [[[NSDateFormatter alloc] init] autorelease];

[outputFormatter setLocale:[NSLocale currentLocale]];

[outputFormatter setDateFormat:@yyyy年MM月dd日 HH时mm分ss秒];

NSString *str= [outputFormatter stringFromDate:inputDate];

NSLog(@testDate:%@,str);

两次打印的结果为:

date= 2011-08-26 05:41:06 +0000

testDate:2011年08月26日 13时41分06秒

 

iOS时间的时区转换以及一些方法记录

https://www.jianshu.com/p/b39852ddbf0c

2016.09.20 13:54* 字数 48 阅读 5654评论 8

系统的一些方法

    NSTimeInterval timeZoneOffset = [[NSTimeZone systemTimeZone] secondsFromGMT]; [NSTimeZone systemTimeZone];//系统所在时区 [NSTimeZone defaultTimeZone];//默认时区,貌似和上一个没什么区别 [NSTimeZone timeZoneForSecondsFromGMT:0];//这就是GMT+0时区了 [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:8*60*60]];//直接指定时区,这里是东8区 

将时间戳转换成时间

    NSTimeInterval interval = [[NSDate date] timeIntervalSince1970]; NSDate *date = [NSDate dateWithTimeIntervalSince1970:interval]; NSDateFormatter *objDateformat = [[NSDateFormatter alloc] init]; [objDateformat setDateFormat:@"yyyy-MM-dd HH:mm"]; self.timeStr = [objDateformat stringFromDate:date]; 

将0时区时间转换成本地时区的时间

    [formatter setTimeZone:[NSTimeZone systemTimeZone]]; 

将字符串转换为date

- (NSDate *)stringToDate:(NSString *)strdate { NSDateFormatter *dateFormatter = [[NSDateFormatteralloc] init]; [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; NSDate *retdate = [dateFormatter dateFromString:strdate]; [dateFormatter release]; return retdate; } 

将date转换为字符串

- (NSString *)dateToString:(NSDate *)date { NSDateFormatter *dateFormatter = [[NSDateFormatteralloc] init]; [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; NSString *strDate = [dateFormatter stringFromDate:date]; [dateFormatter release]; return strDate; }

iOS中NSDate和NSString相互转换

https://blog.csdn.net/whuizhou/article/details/46753393

本文来源地址:http://www.osjoin.com 

 

今天给大家分享一些关于NSDate和NSString相互转换。

 

 

日期转成字符串。这个虽然简单,但是我相信很多朋友初次遇到肯定束手无策。脑子里蹦出四个字:这怎么转?直接上代码:

 

  1.  
    //获取系统当前时间
  2.  
    NSDate *currentDate = [NSDate date];
  3.  
    //用于格式化NSDate对象
  4.  
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
  5.  
    //设置格式:zzz表示时区
  6.  
    [dateFormatter setDateFormat: @"yyyy-MM-dd HH:mm:ss zzz"];
  7.  
    //NSDate转NSString
  8.  
    NSString *currentDateString = [dateFormatter stringFromDate:currentDate];
  9.  
    //输出currentDateString<span style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', 'Microsoft YaHei', Arial, sans-serif; line-height: 25.6000003814697px; white-space: pre-wrap;">NSLog(@"%@",currentDateString);</span>

 

NSDate对象包含两个部分,日期(Date)和时间(Time)。格式化的时间字符串主要也是针对日期和时间的。NSDateFormatter是一个很常用的类,用于格式化NSDate对象,支持本地化的信息。

 

常用的转换格式为:

yyyy-MM-dd HH:mm:ss.SSS

yyyy-MM-dd HH:mm:ss

yyyy-MM-ddMM dd yyyy

NSDateFormatter的转换格式:

 

  1.  
    G: 公元时代,例如AD公元
  2.  
    yy: 年的后 2位
  3.  
    yyyy: 完整年
  4.  
    MM: 月,显示为 1-12
  5.  
    MMM: 月,显示为英文月份简写,如 Jan
  6.  
    MMMM: 月,显示为英文月份全称,如 Janualy
  7.  
    dd: 日, 2位数表示,如02
  8.  
    d: 日, 1-2位显示,如 2
  9.  
    EEE: 简写星期几,如Sun
  10.  
    EEEE: 全写星期几,如Sunday
  11.  
    aa: 上下午,AM/PM
  12.  
    H: 时, 24小时制,0-23
  13.  
    K:时, 12小时制,0-11
  14.  
    m: 分, 1-2位
  15.  
    mm: 分, 2位
  16.  
    s: 秒, 1-2位
  17.  
    ss: 秒, 2位
  18.  
    S: 毫秒

 

既然NSDate可以转成NSString,毫无疑问NSString也可以转成NSDate。代码如下:

 

  1.  
    /**
  2.  
    * 利用nsdateformatter 转换时间
  3.  
     
  4.  
    把当前时间转换为字符串
  5.  
    */
  6.  
    NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
  7.  
    [formatter setDateFormat: @"yyyy-MM-dd HH:mm:sss"];
  8.  
    //获取当前时间
  9.  
    NSDate *dateNow = [NSDate date];
  10.  
    NSLog(@"%@",[formatter stringFromDate:dateNow]);

 

 

  1.  
    /**
  2.  
    * 把字符串时间转换为nsdate
  3.  
    */
  4.  
     
  5.  
    NSDateFormatter *formatter1 = [[NSDateFormatter alloc]init];
  6.  
    [formatter setDateFormat: @"yyyy-MM-dd HH-mm-sss"];
  7.  
     
  8.  
    NSDate *resDate = [formatter dateFromString:@"2014-10-1 12-00-00"];
  9.  
    NSLog(@"%@",resDate);

 

 

 

 转换结论:

   

把一个nsdate类型转换成string类型的时间格式的时候,会在零时区的基础上加8个小时

把一个string类型时间格式转换成nsdate格式的时候,会把时间回归到零时区记时

在转换过程中,系统会自动帮你计算。人为的好像还不能限制。

 

 

在转换时间的时候一定要把占位符 写好

     以及各个时间长度的占位符。不然就会得到的就是null。

 

 

转换工具类

 

在项目中,我们需要用到转换的地方可能不止一处,所以建议我们定义一个工具类。在工具类里实现如下两个方法:

 

 

  1.  
    //NSDate转NSString
  2.  
    + ( NSString *)stringFromDate:(NSDate *)date
  3.  
    {
  4.  
    //获取系统当前时间
  5.  
    NSDate *currentDate = [NSDate date];
  6.  
    //用于格式化NSDate对象
  7.  
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
  8.  
    //设置格式:zzz表示时区
  9.  
    [dateFormatter setDateFormat: @"yyyy-MM-dd HH:mm:ss zzz"];
  10.  
    //NSDate转NSString
  11.  
    NSString *currentDateString = [dateFormatter stringFromDate:currentDate];
  12.  
    //输出currentDateString
  13.  
    NSLog(@"%@",currentDateString);
  14.  
    return currentDateString;
  15.  
    }
  16.  
     
  17.  
    //NSString转NSDate
  18.  
    + ( NSDate *)dateFromString:(NSString *)string
  19.  
    {
  20.  
    //需要转换的字符串
  21.  
    NSString *dateString = @"2015-06-26 08:08:08";
  22.  
    //设置转换格式
  23.  
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init] ;
  24.  
    [formatter setDateFormat: @"yyyy-MM-dd HH:mm:ss"];
  25.  
    //NSString转NSDate
  26.  
    NSDate *date=[formatter dateFromString:dateString];
  27.  
    return date;
  28.  
    }


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM