【问题标题】:How to convert date string to NSDate in ios [duplicate]如何在ios中将日期字符串转换为NSDate [重复]
【发布时间】:2013-10-28 10:42:32
【问题描述】:

我从 Web 服务获取日期和时间作为字符串,这些日期和时间看起来像“2013-10-29”和“11:30”(或“23:30”),但我想显示像“29 OCT”这样的日期。 2013”​​,时间为“11:30 AM”(或“11:30 PM”)。 关于此类问题,我已经经历了很多答案,但是当我尝试返回“null”时没有错误或警告。请帮帮我......

【问题讨论】:

  • 请分享您尝试过的代码以及您查看过的可能链接,我们可能只是告诉您您已经看到了什么。
  • 能否请您在 NSDate 对象中发布您想要转换的确切日期字符串?
  • 我想投票赞成将此问题作为重复问题结束。但是重复的太多了,我无法决定选择哪一个。因此,请更具体一些,并详细说明您已经尝试过的方法以及失败的原因。
  • 这只是NSDateFormatter的重复,不需要任何复杂和额外的计算@tilo
  • @TheTiger 这更像是“你说你已经经历了这么多答案......继续下去,你会找到适合你特定问题的答案。”

标签: ios iphone nsdate


【解决方案1】:

应用此代码更改手动编码的时间和日期与您的属性,它应该可以工作。

NSDateFormatter * dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSDate * dateNotFormatted = [dateFormatter dateFromString:@"2013-10-29"];
[dateFormatter setDateFormat:@"d MMM.YYYY"];    
NSString * dateFormatted = [dateFormatter stringFromDate:dateNotFormatter];

[dateFormatter setDateFormat:@"HH:mm"];
NSDate * timeNotFormatted = [dateFormatter dateFromString:@"11:30"];
[dateFormatter setDateFormat:@"hh:mm a"];    
NSString * timeFormatted = [dateFormatter stringFromDate:timeNotFormatter];

另一种选择是将更严格的时间和日期放在一个字符串中并使用这种格式:

    [dateFormatter setDateFormat:@"d MMM.YYYY at hh:mm a"];    

【讨论】:

  • 感谢亚历克斯,它工作得很好......
  • 感谢 alex nice v 乐于助人
【解决方案2】:

使用NSDateFormatter。在第一种情况下,您的格式将是:@"yyyy-MM-dd"@"HH:mm",在第二种情况下:@"dd MMM.yyyy"@"hh:mm a"

【讨论】:

  • NSDateFormatter *formatter=[[NSDateFormatter alloc]init]; [格式化程序 setDateFormat:@"dd MMM.YYYY"]; NSDate *date=[[NSDate alloc]init]; date=[格式化程序 dateFromString:@"2013-10-29"];这里日期返回“null”
【解决方案3】:

结合日期和时间的第一个,例如“2013-10-29 11:30”

比使用以下函数,如 [self dateFormat:@"yyyy-NN-dd HH:ss" newFormat:@"dd MMM.yyyy hh:mm a"]

- (NSString*) dateFormat : (NSString*)date currentFormat:(NSString*) currentFormat newFormat : (NSString*) newFormat
{
    NSString *dateStr = date;
    NSDateFormatter *dtF = [[NSDateFormatter alloc] init];
    [dtF setDateFormat:currentFormat];
    NSDate *d = [dtF dateFromString:dateStr];

    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat:newFormat];
    NSString * strFinalDate = [dateFormat stringFromDate:d];
    NSLog(@"%@",strFinalDate);

    [dtF release];
    [dateFormat release];

    return strFinalDate;
}

如果您希望日期和时间不同,则使用 NSArray 将其分开。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-06
    • 2017-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多