NSDateFormatter- stringFromDate 未返回 AM/PM

NSDateFormatter- stringFromDate not returning AM/PM

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"hh:mm:ss a"];
    NSLog(@"Today's Time: %@", [formatter stringFromDate:[NSDate date]]);

上面的代码只是给出了下面的输出Today's Time: 15:46:43 我希望输出为 Today's Time: 3:46 PM。 我冲浪了很多,但我没有找到显示 AM/PM 的方法。如果有人可以帮助我找到出路,那将非常有帮助。 我正在使用 XCode 6.3,我的设备中安装了 iOS 8.3。

尝试

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"hh:mm a"];
NSLog(@"Today's Time: %@", [formatter stringFromDate:[NSDate date]]);

检查您设备的 24 小时制设置。如果已打开,请将其关闭。

您的代码完全没问题。我得到如下所示的输出: 今天时间:04:31:58下午

如果您不想显示秒数,请使用此代码:

[formatter setDateFormat:@"hh:mm a"];

将设备时间的时间格式更改为 12 小时格式,而不是 24 小时格式。您无法以 24 小时时间格式获取 am pm。

今天时间:15:46:43

HH:24 小时格式

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[formatter setLocale:locale];
[formatter setDateFormat:@"HH:mm a"];

输出

 Today's Time: 16:42 PM

hh : 12 小时格式

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[formatter setLocale:locale];
[formatter setDateFormat:@"hh:mm a"];

输出

 Today's Time: 04:43 PM

试试这个

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"hh:mm a"];
    [dateFormatter setLocale:[[NSLocale alloc]  initWithLocaleIdentifier:@"en_US_POSIX"]];
    NSString *stringFromTime = [dateFormatter stringFromDate:[NSDate date]];

您可以轻松地将时间转换为 24 小时格式。

试试这个代码,它对我来说工作正常。

        func convertTime(_ dateAsString : String) -> String{
             let dateFormatter = DateFormatter()
             dateFormatter.dateFormat = "h:mm:ss " // "h:mm:ss a"
             let date = dateFormatter.date(from: dateAsString)

             dateFormatter.dateFormat = "HH:mm a"
             let date24 = dateFormatter.string(from: date!)
             print(date24)
             return date24
          }