2015-11-05 152 views
0

我正在開發一款名爲無限日曆的應用程序。這不是無限的,因爲一切都有限制,現在我正在找到這個限制。我正在使用CalendarView來顯示日曆和JodaTime以幫助我處理日期。爲什麼這個CalendarView是空的(什麼都不顯示)?

我的佈局,只有一個觀點:

<CalendarView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:showWeekNumber="false" 
    android:shownWeekCount="5" 
    android:id="@+id/calendar"> 
</CalendarView> 

而且我設置的代碼maxDateminDate

calendar.setMinDate (0); 
calendar.setMaxDate (9223372017014400000L); 

而且爲什麼我用9223372017014400000L?因爲經過一些實驗,我發現這是JodaTime可以達到的最大值。爲什麼我沒有在佈局文件中設置它們?因爲我不知道格式。我之前嘗試了幾次,但它不斷拋出異常說,最大值小於最小值...

現在我認爲,這是如此的好。於是,我就日期設置爲一些非常大的數字:

Date date = new LocalDate (2000000, 1, 1).toDate(); 
calendar.setDate (date.getTime()); 

其實我甚至不知道如果我這樣做很好,如果我只是屠殺這一點。

現在發生了奇怪的事情。當我運行該應用程序時,CalendarView只顯示頂部的月份,年份和星期幾!我搜索,發現類似這樣的一個問題:

Android CalendarView not displaying the days

但答案告訴OP設置尺寸match_parent,我做到了明顯。

所以這裏提出的問題,有沒有特殊的原因呢?如果是的話,那是什麼,我該如何解決它?如果不是,CalendarView的限制是多少?

更新:

我試圖設置最小日期爲默認值(未指定)和最大日期1/1/2000000,然後設置日期一千二萬分之一。現在日曆視圖在1999999顯示日期和其他日期!奇怪!

Jon Skeet請幫幫我!

回答

0

根據我的手機上Google自己的日曆應用程序來判斷,這個應用程序只能到2038年,我想他們的CalendarView也遭受了Year 2038 Problem創建的類似問題。這可能是它支持的最大日期,儘管我在文檔中找不到任何提及。

你可能會更好過尋找其他的解決方案或編寫自己的,使用時64位表示 - 這應該包括你約300十億年... ...


旁白:JodaTime使用時間的64位表示,所以你需要做的最大的就是將63個連續的1s轉換成小數,這會讓你獲得9223372036854775807。沒有實驗要求,比結果略高。

+0

查看更新。我嘗試了其他的東西,日曆顯示2000000年的日期 – Sweeper

+0

我很困惑。你有沒有解決你的問題? – Michael

+0

不行,因爲我還是不明白爲什麼年2000000可以,但是292278993不是 – Sweeper