2015-10-16 14 views
-3

有沒有辦法找出給定的數字是同一年的Hijri [1]和Gregorian [2]的總數?確定給定的數字是否是同一個公曆年和Hijri年的總和?

示例: 3452 = 2015 + 1437

[1]回曆 - 伊斯蘭日曆。 https://en.wikipedia.org/wiki/Islamic_calendar

[2]陽曆。 https://en.wikipedia.org/wiki/Gregorian_calendar

+0

鑑於[回曆一年(https://en.m.wikipedia.org/wiki/Hijri_year)354天之久( 「* 2015年公元對應於伊斯蘭時代啊1436年至1437年*」)一個公曆年將對應*至少*兩個Hijri年。你將如何處理? 2015 + 1436和2015 + 1436 **都可以接受嗎? –

+0

......實際上,由於他們*不會/不能*在同一天改變,我認爲任何大於622(622 ce = ah 1)的數字都可以表示爲這些年份的總和**至少一天**。 –

+1

我投票結束這個問題作爲題外話,因爲它沒有實際用途,也沒有提供任何現有的代碼。如問,這是一個代碼拼圖,並會適合更好[codegolf.SE](http://codegolf.stackexchange.com/) –

回答

0

這也許是有點蠻力的辦法,這將要求您預先填充兩個清單日期(但它並不壞,只有大約每2000元):

// Fill this up with all Hijri dates witin your range 
List<int> hijriDates = new List<int>() { 1,2, 1437 }; 

// Fill this up with all gregorian dates within your range 
List<int> gregorianDates = new List<int>() { 3,2, 2015 }; 

int number = 3452; 

var result = 
     from i in hijriDates       
     from j in gregorianDates 
     where i + j == number 
     select new { Hijri = i , Gregorian = j}; 

後你已經過濾了可能匹配的列表,然後你可以計算出哪些是同一年。你可以做到這一點使用其中一個答案從這裏:

Converting Gregorian date to Hijri date