2014-12-03 25 views
2

我想知道如果一個特定的日期屬於:確定賽季在Java中與JodaTime定的時間戳和時區


夏季
秋季
冬季

這是我如何初始化日期時間

DateTimeZone timeZone = DateTimeZone.forID("America/Los_Angeles"); 
timestamp = new DateTime(unixtimestamp, timeZone); 

是否有可能使用JodaTime?

我發現了一個類似的帖子這是有用的,但它不走半球中acccount:

Identifying the season from the Date using Java

+1

你如何定義一個「賽季」 - 特定日期範圍?你希望他們根據位置改變,還是隻是半球? – Nick 2014-12-03 22:01:22

回答

0

沒有,喬達時間不提供此功能。它提供了有關時間的信息,這與地球在其軸上旋轉了多少有關。季節與地球相對於太陽的旋轉有關。所以即使「洛杉磯」在北半球,喬達時間也不知道。它只知道它的時區是在兩個半球存在的UTC-08:00

幸運的是,地球圍繞太陽旋轉(合理)可預測和循環。因此,無論何時,您都可以確定特定時間和半球的賽季。在引用的堆棧溢出中,他們基本上固定了半球,因此在時間和季節中只有兩個變量。

如果你想考慮半球,你可以使用現有的解決方案,並最終寫一個函數,如果你的位置在南半球而不是北半球,那麼它將會顛倒季節。

解決方案留給讀者作爲一個練習

+1

僅在短時間內軸向傾斜是「可預測的」,它在數千年內發生明顯變化:http://en.wikipedia.org/wiki/Axial_tilt#mediaviewer/File:Obliquity_of_the_ecliptic_laskar.PNG,實際上確切的預測是不可能:http://en.wikipedia.org/wiki/Axial_tilt#mediaviewer/File:Obliquity_berger_-5000000_to_0.png – specializt 2014-12-03 22:37:57

+0

技術上你是對的。然而,考慮到所有的實際情況,我不會擔心6月份冬季發生的情況。吻。 – 2014-12-03 23:11:15

+0

哈,我的意思是在北半球*** – 2014-12-03 23:33:20