【问题标题】:How to get the time in am/pm format iphone NSDateFormatter?如何以上午/下午格式获取 iphone NSDateFormatter 的时间?
【发布时间】:2012-07-23 07:32:08
【问题描述】:

我正在使用 NSDateFormatter 在 iPhone 应用程序中工作。我正在从"00:00:00", "16:00:00","15:30:00" and so on 之类的网络服务中获取时间。我需要将这些时间转换为 如果时间是"00:00:00" to "12 AM",如果时间是"16:00:00" to "4 PM",如果时间是“15:30:00”到“3.30 PM”。我已经使用了下面的代码,但是当我通过 "16:00:00" the date returns null.

 NSString *dats1 = @"16:00:00";
 NSDateFormatter *dateFormatter3 = [[[NSDateFormatter alloc] init] autorelease];
 [dateFormatter3 setDateStyle:NSDateFormatterMediumStyle];  
 [dateFormatter3 setDateFormat:@"hh:mm:ss"]; 
 NSDate *date1 = [dateFormatter3 dateFromString:dats1];
 NSLog(@"date1 : %@", date1); **// Here returning (null)**

 NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
 [formatter setDateFormat:@"hh:mm a"];
 NSLog(@"Current Date: %@", [formatter stringFromDate:date1]); **// Here also returning (null)**
 [formatter release];

当我传递“00:00:00”时,它会正确返回“12 AM”。谁能帮我解决这个问题?提前致谢。

【问题讨论】:

    标签: iphone ios time nsdateformatter


    【解决方案1】:

    如果您的时间格式为24hrs,请使用"HH:mm:ss" 格式。请测试代码并让我知道它是否适合您。我已经测试过,它正在返回"4 PM"

    NSString *dats1 = @"16:00:00";
     NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
     [dateFormatter3 setDateStyle:NSDateFormatterMediumStyle];  
     [dateFormatter3 setDateFormat:@"HH:mm:ss"]; 
     NSDate *date1 = [dateFormatter3 dateFromString:dats1];
     NSLog(@"date1 : %@", date1); **// Here returning (null)**
    
     [dateFormatter setDateFormat:@"hh:mm a"];
     NSLog(@"Current Date: %@", [formatter stringFromDate:date1]); **// Here also returning (null)**
     [formatter release];
    

    谢谢。

    【讨论】:

    • 这里是上午 12:12,但返回时间是下午 12:12 .. 嗯
    • 在 ios9 中返回 16:00
    • @PatelJigar 添加这个 [dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];
    【解决方案2】:

    您可以使用.ShortStyle,它将适应当前的语言环境:

    let timeFormatter = NSDateFormatter()
    timeFormatter.dateStyle = .NoStyle
    timeFormatter.timeStyle = .ShortStyle
    timeFormatter.stringFromDate(NSDate())
    

    根据当前设备区域设置返回17:125:12 PM

    【讨论】:

      【解决方案3】:

      你为什么又分配NSDateFormatter

      您只需将其格式化为NSDate,然后再格式化为NSString

          NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
          [dateFormatter setDateFormat:@"HH:mm:ss"];
      
          NSDate *date = [dateFormatter dateFromString:dats1];
      
          [dateFormatter setDateFormat:@"hh:mm a"];
      
          NSString *formattedDate = [dateFormatter stringFromDate:date];
      
          NSLog(@"%@",formattedDate);
      

      【讨论】:

      • 不错的代码...+1,但我认为首先dateFormatter setDateFormat:@"HH:mm:ss"]; 没有必要。
      • 这是必要的,因为他有 HH 格式的输入时间格式,即 24 小时格式
      【解决方案4】:

      试试HH:mm:ss(注意小时格式的大写)

      【讨论】:

        【解决方案5】:

        希望有人愿意在 Swift 中获得它的帮助

        Swift 5.1+

        let dateFormatter = DateFormatter()
        //if you want 12AM,5PM then use "hh mm a"
        //if you want 00AM,17PM then use "HH mm a"
        dateFormatter.dateFormat = "hh mm a"
        let stringDate = dateFormatter.string(from: Date())
        print(stringDate)
        

        【讨论】:

          【解决方案6】:

          以下代码始终保持 12 小时格式:

          NSLocale *12hourFomrat = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
          df.locale = 12hourFomrat;
          

          这始终保持 24 小时格式

          NSLocale *24hourFormat = [[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"];
          df.locale = 24hourFormat
          

          【讨论】:

            【解决方案7】:

            你的日期格式应该是:

              [dateFormatter3 setDateFormat:@"HH:mm:ss"]; 
            

            查看Date Format Pattern Doku

            【讨论】:

              【解决方案8】:

              斯威夫特 5:

              let dateFormatter = DateFormatter()
              dateFormatter.dateFormat = "hh mm a"
              let formattedDate = dateFormatter.string(from: Date())
              

              【讨论】:

                猜你喜欢
                • 2021-09-17
                • 1970-01-01
                • 1970-01-01
                • 2015-06-02
                • 2012-02-23
                • 2012-01-10
                • 2021-11-09
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多