ios - 日期转换不当?

标签 ios swift calendar

我正在尝试创建一个函数,该函数将获取任意日历中传入的月份的公历开始日期和结束日期。

因此,如果我通过希伯来日历,第 3 个月,5775 年,我会期望得到这样的结果 (2015-05-19T00:00:00.000-05:00, 2015-06-17T00:00:00.000-05: 00)

let (start,end) = gregorianMonthForCalendarMonth(NSCalendar(calendarIdentifier: NSCalendarIdentifierHebrew)!, 3, 5775)
println(start)
println(end)

我得到的是 (2014-11-23T00:00:00.000-05:00, 2014-12-22T00:00:00.000-05:00)

不确定我做错了什么。

我的职能:

let fullDateFormatter = getFullDateFormatter()

func getFullDateFormatter() -> NSDateFormatter {
    let _dateFormatter = NSDateFormatter()
    _dateFormatter.calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)
    _dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss'.'SSSZZZZZ"
    return _dateFormatter
}

func gregorianMonthForCalendarMonth(calendar:NSCalendar, month:Int, year:Int) -> (start:String, end:String) {
    // get 1st day of month
    let components = NSDateComponents()
    components.year = year
    components.month = month
    components.day = 1

    let start = calendar.dateFromComponents(components)

    // get number of days in the month
    let days = calendar.rangeOfUnit(NSCalendarUnit.CalendarUnitDay, inUnit: NSCalendarUnit.CalendarUnitMonth, forDate: start!)
    components.day = days.length

    let end = calendar.dateFromComponents(components)

    return (start!.stringValue(),end!.stringValue())
}

extension NSDate {
    func stringValue() -> String {
        let strDate = fullDateFormatter.stringFromDate(self)
        return strDate
    }
}

最佳答案

问题似乎源于对 5775 的“第三”个月的解释。基斯流月是民历年的第三个月。 1 Kislev 5775 是 2014 年 11 月 23 日。

然而,Silvan 是教会年的第 3 个月,1 Silvan 5775 是 2015 年 5 月 19 日。

Apple 选择民用年月编号方式在某种程度上是可以理解的,因为希伯来数字年值在 Tishrei(民用年的第一个月,教会年的第七个月)上递增。

诚然,许多希伯来语日期转换网站按照教会年中出现的顺序列出月份,但如果您深入研究这些网站,您会发现它们准确地反射(reflect)了 Tishrei 的第一个年份数字变化。我注意到,其中许多网站不要求提供月份数字,而是让您从月份名称列表中进行选择,从而消除了简单提及“第三”月份可能会带来的混淆。

关于ios - 日期转换不当?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30848411/

相关文章:

ios - 如何在 subview Controller 的 View 上设置 View ?

ios - 如何使 UIView 匹配 UILabel 的大小

ios - 如何在 Swift 中关闭预览 UI Controller ?

ios - 当我使用自定义 UIColors 时标签的文本颜色没有改变

sql-server - SQL - 如何使用 ISO 周获取年-周?

javascript - 隐藏div中的日历

ios - 如何将 MPMediaItemCollection 保存到数据库?

android - 在 Google Drive API 中重复上传所需的 MIME 类型吗?

Android 日历 API : How to force sync for a specific calendar

ios - Swift 2 上的同步 URL 请求