【问题标题】:How to get the day of the week from a date in Swift如何从 Swift 中的日期获取星期几
【发布时间】:2019-07-02 02:54:05
【问题描述】:

我可以以这种格式打印日期:2018 年 3 月 19 日星期一,但我不确定如何以这种格式获取星期几。

请帮忙

【问题讨论】:

  • 星期几是什么意思?
  • 喜欢“星期二”。

标签: ios swift


【解决方案1】:
let dateFormatter = DateFormatter()
// uncomment to enforce the US locale
// dateFormatter.locale = Locale(identifier: "en-US") 
dateFormatter.setLocalizedDateFormatFromTemplate("EEE MMM d yyyy")
print(dateFormatter.string(from: Date())) // "Tue, Mar 20, 2018" for en-US locale

请注意,我使用模板来提供准确的格式,因此该格式将在每种语言中正确本地化。

【讨论】:

  • @Sh_Khan 正是 OP 想要的。
【解决方案2】:

获取特定日期的日期:

let customDateFormatter = DateFormatter()

print(customDateFormatter.weekdaySymbols[Calendar.current.component(.weekday, from: Date())])

// "星期三"

source

【讨论】:

    【解决方案3】:

    而不是需要拼出日期格式。我会进一步简化为:

    dateFormatter.dateStyle = .full
    

    或者,如果您只是想要这一天:

    dateFormatter.dateFormat = "EEEE" 
    

    【讨论】:

      【解决方案4】:

      使用 swift 4

       func timeStamp()->String {
      
            let dateFormater = DateFormatter()
            dateFormater.locale = Locale(identifier: "en-US") 
            dateFormater.setLocalizedDateFormatFromTemplate("EEE MMM d yyyy")
      
            return dateFormatter.string(from: Date())
          }
      

      使用它。

      let getTimeStamp = timeStamp()
         print(getTimeStamp)
      

      【讨论】:

      • Mon 预期在哪里??
      • 不要在 Swift 3+ 中使用NSDateFormatter,也不要通过盗版其他人来改进你的答案。 ?
      • 这跟我的回答一模一样
      • 是的,我们在同一时间做了,所以我不能删除我的答案。对不起。
      【解决方案5】:

      dateFormatter.dateFormat = "EEE, MMM dd, yyyy"

      对于字母表中的星期日期,您使用 EEEE 或类似于 MMM 和 yyyy 的 EEE 来表示月份。

      【讨论】:

      【解决方案6】:

      更改日期的最佳方法是遵循此方法。

      func ChangeDateFormat(date:String,FromFormat: String, ToFormat: String) -> String {
          let dateFormatter1 = DateFormatter()
          dateFormatter1.dateFormat = FromFormat
          let myDate = dateFormatter1.date(from: date)
          dateFormatter1.dateFormat = ToFormat
          if(myDate != nil){
              let Date = dateFormatter1.string(from: myDate!)
              return Date
          }
          else{
              return ""
          }
      }
      

      然后你可以像这样使用这个方法

      String(ChangeDateFormat(date: StartDate, FromFormat: "yyyy-MM-dd hh:mm:ss a", ToFormat: "MMM d, yyyy"))
      

      您可以传递您的日期格式,在您的情况下应该采用哪种格式

        String(ChangeDateFormat(date: StartDate, FromFormat: "Pass your date format", ToFormat: "EEE MMM d, yyyy"))
      

      【讨论】:

      • 请学习使用if letguard let。另外请使用 swift 命名约定,而不是其他语言的约定。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-07
      • 1970-01-01
      • 1970-01-01
      • 2020-01-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多