当前位置: 首页 > 面试题库 >

快速回历(伊斯兰)日历التاريخالهجري

刘奇
2023-03-14
问题内容

有谁可以帮助我吗

我正在尝试使用Swift语言创建IOS应用,并且我需要使用回历(伊斯兰)日历

我尝试了很多次,但失败了:(

这是我的尝试

    let datenow = NSDate()
    let calendar = NSCalendar.currentCalendar()
    let components = calendar.components(NSCalendarUnit(UInt.max), fromDate: datenow)

    var gregorian = NSCalendar(identifier:NSIslamicCivilCalendar)
    var date = gregorian.dateFromComponents(components)

    println(date)

并且输出错误

   2576-04-25 09:05:08 +0000

我们是在1434年的回历中,而不是2576年!


问题答案:

您正在混合日历,日期和组成部分:

let datenow = NSDate() 
    // This is a point in time, independent of calendars
let calendar = NSCalendar.currentCalendar() 
    // System calendar, likely Gregorian 
let components = calendar.components(NSCalendarUnit(UInt.max), fromDate: datenow) 
    // Gregorian components

println("\(components.year)") // "2014"

var islamic = NSCalendar(identifier:NSIslamicCivilCalendar)! // Changed the variable name 
    // *** Note also NSCalendar(identifier:) now returns now returns an optional ***
var date = islamic.dateFromComponents(components) 
    // so you have asked to initialise the date as AH 2014

println(date) 
    // This is a point in time again, sometime in AH 2014, or AD 2576

您需要做的只是:

let datenow = NSDate()
let islamic = NSCalendar(identifier:NSIslamicCivilCalendar)!
let components = islamic.components(NSCalendarUnit(UInt.max), fromDate: datenow)
println("Date in system calendar:\(datenow), in Hijri:\(components.year)-\(components.month)-\(components.day)")
   //"Date in system calendar:2014-09-25 09:53:00 +0000, in Hijri:1435-11-30"

要获取格式化的字符串,而不仅仅是整数部分,您需要使用NSDateFormatter,这将允许您指定日历和日期以及格式。看这里。

更新资料

可以根据要求将数字简单地音译为(东方)阿拉伯数字(因为0
… 9被称为(西方)阿拉伯数字,以区别于罗马数字),您可以使用:

let sWesternArabic = "\(components.day)-\(components.month)-\(components.year)"
let substituteEasternArabic = ["0":"٠", "1":"١", "2":"٢", "3":"٣", "4":"٤", "5":"٥", "6":"٦", "7":"٧", "8":"٨", "9":"٩"]
var sEasternArabic =  ""
for i in sWesternArabic {
    if let subs = substituteEasternArabic[String(i)] { // String(i) needed as i is a character
        sEasternArabic += subs
    } else {
        sEasternArabic += String(i)
    }
}

println("Western Arabic numerals = \(sWesternArabic), Eastern Arabic numerals = \(sEasternArabic)")


 类似资料:
  • 我想将Hijri日期转换为公历日期!我已经搜索过了,但不幸的是,我找到了一个将公历转换为Hijri的java类。我需要相反的。 HijriCalendar。爪哇:https://gist.github.com/fatfingers/6492017

  • 我知道这个问题被问了很多次,但我没有找到正确的方法。我有一个日期,比如01-08-1994。我想把它转换成日期。使用。

  • 见SO 15728744和SO 51058875。 以下内容如何正确: 我认为Hijri日在日落时结束,而不是午夜,所以应该需要一个gregorianDateTime。

  • 问题内容: 我想从公历转换为回历(伊斯兰)日期,并且我需要一个Java类来进行转换。我想以字符串“ yyyy / mm / dd”的形式给它一个公历日期,并以相同的格式给我回历日期。谁能帮我? 问题答案: 首先,将转换部分与格式/解析部分分开。您以后可以轻松处理这些问题-堆栈溢出问题 很多 。 就我个人而言,我会使用Joda Time,它通常会使生活简单得多。例如: (感觉应该有一种更干净的方式在

  • 我目前正在尝试这样做,当我在日历视图中选择一天时,该天的所有事件都会列出。我很难让它显示一天中的所有事件(看起来它在上午12点到11点59分不起作用?)。这里是我目前拥有的。 和 如果我有12am-11:59am的事件1和12pm-11:59pm的事件2,则仅列出事件2。

  • 日历组件用来选择年月日,可以代替系统原生的日历组件,提供更统一的视觉和交互以及更好的兼容性。日历组件需要初始化才能使用,最简单的方式是通过一下JS代码来初始化,绑定到一个input元素上: $("#my-input").calendar({     value: ['2015-12-05'] }); 当你点击input元素后,会自动弹出一个JS生成的日历组件。当用户选择日期之后,input的值