我想以这种格式显示日历

给用户。一种选择是使用“字符串范围”来获取各个日历组件。第二个是使用NSCalendar来获得它,对我来说看起来更好(不是吗?)。所以我的代码如下。但是有两个问题。

  • 我没有获取本地时间形式的“小时和分钟组件”
  • 我在Int得到一个月。我希望它以String形式出现(在MediumStyle中为月)

  • 有人知道我需要什么吗?所附图片正是我想要实现的。我在这里使用三个UILabel,一个用于“日期”,第二个用于“月,年”,第三个用于“时间”。

    任何帮助,将不胜感激。
    var inputDateString = "Jun/12/2015 02:05 Am +05:00"
    
    override func viewDidLoad() {
        super.viewDidLoad()
        let newDate = dateformatterDateString(inputDateString)
        let calendar = NSCalendar.currentCalendar()
        let components = calendar.components(.CalendarUnitHour | .CalendarUnitMinute | .CalendarUnitMonth | .CalendarUnitYear | .CalendarUnitDay, fromDate: newDate!)
    
        let hour = components.hour
        let minutes = components.minute
        let month = components.month
        let year = components.year
        let day = components.day
    
        println(newDate)
        println(components)
        println(day)     // 12
        println(month)   // 6 -----> Want to have "Jun" here
        println(year)    // 2015
        println(hour)    // 2 ------> Want to have the hour in the inputString i.e. 02
        println(minutes) // 35 ------> Want to have the minute in the inputString i.e.  05
    }
    
    func dateformatterDateString(dateString: String) -> NSDate? {
        let dateFormatter: NSDateFormatter = NSDateFormatter()
        dateFormatter.dateFormat = "MMM/dd/yyyy hh:mm a Z"
        //      dateFormatter.timeZone = NSTimeZone(abbreviation: "UTC")
        dateFormatter.timeZone = NSTimeZone.localTimeZone()
        return dateFormatter.dateFromString(dateString)
    }
    

    最佳答案

    您可以按以下方式使用DateFormatter:

    extension Formatter {
        static let monthMedium: DateFormatter = {
            let formatter = DateFormatter()
            formatter.dateFormat = "LLL"
            return formatter
        }()
        static let hour12: DateFormatter = {
            let formatter = DateFormatter()
            formatter.dateFormat = "h"
            return formatter
        }()
        static let minute0x: DateFormatter = {
            let formatter = DateFormatter()
            formatter.dateFormat = "mm"
            return formatter
        }()
        static let amPM: DateFormatter = {
            let formatter = DateFormatter()
            formatter.dateFormat = "a"
            return formatter
        }()
    }
    extension Date {
        var monthMedium: String  { return Formatter.monthMedium.string(from: self) }
        var hour12:  String      { return Formatter.hour12.string(from: self) }
        var minute0x: String     { return Formatter.minute0x.string(from: self) }
        var amPM: String         { return Formatter.amPM.string(from: self) }
    }
    
    let date = Date()
    
    let dateMonth  = date.monthMedium  // "May"
    let dateHour   = date.hour12       // "1"
    let dateMinute = date.minute0x     // "18"
    let dateAmPm = date.amPM           // "PM"
    

    关于ios - iOS Swift将日历组件int month转换为中等风格的字符串month,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30792264/

    10-14 20:59
    查看更多