【问题标题】:Converting can NSString to NSDate format in objective C [duplicate]在目标C中将NSString转换为NSDate格式[重复]
【发布时间】:2013-11-01 14:24:28
【问题描述】:

如何将以下字符串“美国东部标准时间 10 月 24 日,星期一 12:30 AM”转换为 NSDateFormat。

我试过这个代码

NSDateFormatter *dateformat=[[NSDateFormatter alloc]init];
[dateformat setDateFormat:@"MM/DD/YYYY hh:mm a"];
NSDate *datefor=[dateformat dateFromString:appDelegate.appoinmentString];
[dateformat setDateFormat:@"MM-dd-yyyy hh:mm a"];
NSString *dateStr=[dateformat stringFromDate:datefor];

NSDate *datetype=[dateformat dateFromString:dateStr];

【问题讨论】:

  • 您在 DateFormatter 中输入的日期格式与字符串中的不匹配
  • 到目前为止,您提出了 7 个问题,但您没有接受任何一个。如果您发现任何答案对您有帮助,则应将其标记为“已接受”。因此,它会提高您的“接受率”,并且对未来的访问者也有帮助。

标签: iphone objective-c nsdate nsdateformatter nsdatecomponents


【解决方案1】:

October 24,Monday 12:30 AM EST 的 dateformat 不正确。在您的情况下,正确的dateformat 是MMMM dd,eeee HH:mm a z。


工作代码:

NSDateFormatter *dateformat = [[NSDateFormatter alloc] init];
[dateformat setDateFormat:@"MMMM dd,eeee HH:mm a z"];
NSDate *myDate = [dateformat dateFromString:@"October 24,Monday 12:30 AM EST"];

看看Date Format Specifiers。

  1. eeee - 说明了当地星期几。
  2. MMMM - 月份拼写出来。
  3. dd - 没有前导零的月份。
  4. HH - 一天中的小时(24 小时格式)。
  5. mm - 分钟(前导零)。
  6. z - 时区(短墙 时间)。

【讨论】:

    【解决方案2】:

    试试这个...

    NSString *p=@"October 24,Monday 12:30 AM EST";
    NSDateFormatter *dateformat=[[NSDateFormatter alloc]init];
    [dateformat setDateFormat:@"MMM dd,EEEE hh:mm a vvv"];
    NSDate *datefor=[dateformat dateFromString:p];
    [dateformat setDateFormat:@"MM-dd-yyyy hh:mm a"];
    NSString *dateStr=[dateformat stringFromDate:datefor];
    
    NSDate *datetype=[dateformat dateFromString:dateStr];
    

    如果您有任何问题,请告诉我。

    【讨论】:

    • 试试这个对我有用。
    • 谢谢你@user1673099,我已经做到了,你说的
    • @Vasu,那么请接受这个作为答案,这样这将有助于任何其他并朝着正确的方向前进。因为人们只会看到被接受的答案。
    【解决方案3】:

    尝试如下:-

    NSString *dateStr=@"October 24,Monday 12:30 AM EST";
    [dateFormat setTimeZone:[NSTimeZone timeZoneWithName:@"EST"]];
    [dateFormat setDateFormat:@"MMMM dd,eeee HH:mm a z"];
    
    NSDate *changeDate=[dateFormat dateFromString:dateStr];
    NSLog(@"changeDate=%@",changeDate);
    NSString *str=[dateFormat stringFromDate:changeDate];
    
    //getting your local time
    NSTimeZone *tz=[NSTimeZone localTimeZone];
    //setting yourlocal time
    [dateFormat setTimeZone:tz];
    NSDate *date = [dateFormat dateFromString:str];
    //Setting your desired format
    [dateFormat setDateFormat:@"dd-mm Z"];
    NSString *newDate=[dateFormat stringFromDate:date];
    NSLog(@"new date=%@",newDate);
    

    【讨论】:

      猜你喜欢
      • 2018-07-10
      • 1970-01-01
      • 2013-01-16
      • 2012-12-17
      • 2012-03-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多