【问题标题】:NSDateFormatter "Month" in 3 letters instead of full wordNSDateFormatter “月份” 3 个字母而不是完整的单词
【发布时间】:2012-05-18 02:52:49
【问题描述】:
    NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"dd-MM-YYYY HH:mm"];        
    [formatter setTimeZone:[NSTimeZone systemTimeZone]];

如果我选择MM,我会得到月份编号:09-05-2012 15:33 如果我选择 MMMM 我会得到月份:09-May-2012 15:33

我想要的是 3 个字母缩写的月份。
例如:January 将是 Jan

在这种情况下,May 是正确的,因为它只有 3 个字母。

【问题讨论】:

  • 使用MMM作为短月份名称

标签: ios date nsdate nsdateformatter monthcalendar


【解决方案1】:

你有没有试过:[formatter setDateFormat:@"dd-MMM-YYYY HH:mm"]; 然后[formatter stringFromDate:someNSDate];

【讨论】:

  • M 给我号码 MMM 给我完整的单词
  • 也许你是对的,我正在尝试使用 May。应该使用不同的月份,但我在模拟器上......
  • 哈哈哈,“五月”是唯一可以测试这个的不确定月份。
  • 这篇文章帮助了我:stackoverflow.com/questions/35969183/…
【解决方案2】:

如果你以错误的顺序得到这两个东西,你就不会得到预期的输出。

[formatter setDateFormat:@"MMM"];
[formatter setDateStyle:NSDateFormatterMediumStyle];

与以下结果不同:

[formatter setDateStyle:NSDateFormatterMediumStyle];
[formatter setDateFormat:@"MMM"];

(这两个 sn-ps 中的第二个现在很高兴在我的应用中分发 Sep Oct 等)

【讨论】:

    【解决方案3】:

    SWIFT

    let dateFormatter = NSDateFormatter()
    
    dateFormatter.dateFormat = "dd MMM yyyy HH:mm"
    
    dateFormatter.stringFromDate(NSDate())
    

    【讨论】:

      【解决方案4】:

      这是一个精简的解决方案,可与 Swift 4 一起生成 3 个字母的月份输出:

      let dateFormatter = DateFormatter()
      dateFormatter.dateFormat = "dd MMM YYYY, HH:mm:ss"
      

      并验证:

      print(dateFormatter.string(from: Date())) // 20 Mar 2018, 23:41:40
      

      如前所述,MMM 是获取所需月份输出的正确语法。

      【讨论】:

        【解决方案5】:

        对于 swift 4 来说:

        if let dateFormatter = DateFormatter(){
            dateFormatter.dateStyle = .medium
            // eventually:
            //let locale = Locale(identifier: ...                       
            //dateFormatter!.locale = locale
            dateFormatter.dateStyle = .medium
            dateFormatter!.dateFormat = "dd MMM YYYY, HH:mm:ss"
         } else..
                ..
        

        【讨论】:

          【解决方案6】:

          实际上,您可以像这样将 dateStyle 设置为中等(即“Jan”、“Feb”等):

          [formatter setDateStyle:NSDateFormatterMediumStyle];
          

          【讨论】:

            【解决方案7】:

            对于那些使用“MMM”没有获得一整月强大的人,您可以使用它来获得它

            dateFormatter.dateFormat = "dd MMMM yyyy"
            

            在 Swift 4.2 上测试

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-08-30
              • 1970-01-01
              • 2018-03-05
              相关资源
              最近更新 更多