【问题标题】:NSDate from NSString in iPhone来自 iPhone 中 NSString 的 NSDate
【发布时间】:2012-10-09 09:39:51
【问题描述】:

NSString 转换为NSDate 的一件简单的事情。如何以相同的格式将Mon, 27 August 2012 01:30 AM 转换为NSDate。我试过NSDateFormatter。但我没有以这种必需的格式得到它。任何人都可以帮忙吗?这是我尝试过的。

 NSDateFormatter *df=[[NSDateFormatter alloc] init];
[df setDateFormat:@"EEEE,dd MM yyyy HH:mm a"];
NSDate *date1 = [df dateFromString:@"Mon,27 August 2012 01:30 AM"];
NSLog(@"%@",date1);

【问题讨论】:

  • 使用默认格式?:)

标签: iphone nsstring nsdate


【解决方案1】:

希望这对你有所帮助!

NSDateFormatter *dateformater=[[[NSDateFormatter alloc] init]autorelease];
[dateformater setDateFormat:@"EEEE,dd MMMM yyyy HH:mm a"];

NSDate *todayTmp=[NSDate date];
NSString *conversionDate=[dateformater stringFromDate:todayTmp];

Note : (Upper case) HH for 24h time format, (Lower case) hh for 12h time format

【讨论】:

  • 我必须从字符串转换为日期
【解决方案2】:
NSString *myDateAsAStringValue = @"Mon, 27 August 2012 01:30 AM";

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

[df setDateFormat:@"EEE, dd MMM yyyy HH:mm a"];

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

myDate = [df dateFromString:myDateAsAStringValue];

[df release];

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm a"];
NSString *strDate = [dateFormatter stringFromDate:myDate];
NSLog(@"%@", strDate);
[dateFormatter release];

【讨论】:

    【解决方案3】:

    请使用以下代码

       NSDateFormatter *df=[[NSDateFormatter alloc] init];
       [df setDateFormat:@"EEE,dd MMMM yyyy hh:mm a"];
       NSDate *date1 = [df dateFromString:@"Mon,27 August 2012 01:30 AM"];
       NSLog(@"%@",date1);
    

    您的格式化程序错误 检查这个

    【讨论】:

    • 只要您使用英语语言环境,它就可以工作。其他人都失败了。
    • 这就是我在日志“2012-08-26 20:00:00 +0000”中得到的内容
    • 是的,它显示“2012-08-26 20:00:00 +0000”,因为“周一,2012 年 8 月 27 日 01:30 AM”是 IST 时间,而 nsdate 显示的是 GMT 时间。 IST 时间 = GMT + 5:30 小时,因此当 IST 时间为上午 1:30 且日期为 27 时,GMT 时间为晚上 8:00 且日期为 26。
    【解决方案4】:

    NSDateFormatter是指定在提取从日期中的字符串时会出现在日期字符串中的格式或者是在提取日期来自字符串

    因此,每当您从 NSString 中提取 NSDate 时,总是以默认日期格式获取 NSDate(例如 2012-08-27 00:30:00 +0000)...仅当您提取NSString from NSDate, NSString 可以用你在 NSDateFormatter 中设置的期望(自定义)格式获取。

    【讨论】:

    • 我需要将此日期添加到日历事件中。这就是为什么我要这样尝试。
    • 如果你想要它作为 NSDate 对象,那么有我上面提到的默认格式......如果你想要它在你的自定义格式中,那么你必须将它存储在 NSString 对象中
    【解决方案5】:

    我猜,NSLog 将以固定格式返回 NSDate。 如果我们需要不同格式的日期,我们应该通过 NSDateFormatter 对其进行格式化并将其获取为 NSString。 只是一个猜测。

    【讨论】:

      【解决方案6】:

      别忘了设置正确的语言环境!如果您的设备不使用英语语言环境,NSDateFormatter 可能无法将 MonAugust 转换为有用的信息,因为 Mon 在您的语言中不是星期一的正确缩写。例如,在德国,星期一的正确三字母缩写是 Mon.

      如果您解析包含单词的日期,则必须设置正确的语言环境。

      这应该可行:

      NSDateFormatter *df=[[NSDateFormatter alloc] init];
      [df setDateFormat:@"EEE,dd MMMM yyyy hh:mm a"];
      
      NSLocale *posixLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
      [df setLocale:posixLocale];
      
      NSDate *date1 = [df dateFromString:@"Mon,27 August 2012 01:30 AM"];
      NSLog(@"%@",date1);
      

      EEE 是三字母工作日缩写的日期格式化程序代码。
      hh 是 1 到 12 之间的时间的 dateformatter 代码。HH 表示 0-23
      MMMM 是整月,MM 是月份的数值 (= 08)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-02-06
        • 2011-06-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多