2011-10-13 33 views
2

我见过很多关于日期和比较的帖子,但我正在寻找一些特殊的东西。最简单的方法来比较日期

基本上,当这部分的应用程序被打开,我希望它保存共享喜好的日期。 (所以最好是一个很长的,字符串或者可以保存的东西)。自从开放4天后,它应该有一个图形变化。 (它不再使用它以前4天的图形),它会再次执行2次。那么,什么是保存的日期/时间来比较电流,以确定如果4个天过去了

最好我想用这样的事情以某种形式的最佳方式

if(savedDate < 4Days){ 
//One image will be displayed during these 4 days 
} 
else if(savedDate <= 8Days){ 
//Another images shows for these 4 days 
} 

它只需要知道这段时间是否已经过去了。我希望我没有把它弄得太混乱。任何帮助表示感谢。

回答

1

使用System.currentTimeMillis

保存在共享preferances只要值,并始终将其与新测量的currentTimeMillis比较,直到差别是> 4 * 24 * 60 * 60 * 1000

+1

这听起来像是一个很好的方法来做到这一点。谢谢。至于比较,所以它会像savedDate steven

+0

当应用程序的这部分打开时,请执行:long currTime = System.currentTimeMillis()。然后你这样做:if(currTime> savedDate + 4 * 24 * 60 * 60 * 1000){// 4天过去了} – galbarm

1

也许像这样的:

Calendar now = Calendar.getInstance(); 
// Go back 4 days. 
now.add(Calendar.DATE, -4); 
Date fourDaysAgo = now.getTime(); 

if (savedDate.after(fourDaysAgo)) 
{ 
    // Show first image 
} 
else 
{ 
    //Show second image. 
} 

如果你不想在8天后,显示第二图像,那么你就需要添加另一个条件,但这应该把你的右线,我想。

+0

那很好。我试试看。 – steven

1

您可以使用System.currentTimeMillis()http://developer.android.com/reference/android/os/SystemClock.html以毫秒为单位保存当前时间。

long currentTimeMillis = System.currentTimeMillis(); 
long oneDayMillis = 24 * 3600 * 1000; 

if((currentTimeMillis - savedTimeMillis) < (4 * oneDayMillis)){ 
    //One image will be displayed during these 4 days 
} 
else if((currentTimeMillis - savedTimeMillis) < (8 * oneDayMillis)){ 
//Another images shows for these 4 days 
}else{ 
// do... 
} 

java.util.date一样平等的基本操作日期后,和之前与长谁代表自1970-01-01 00:00:00时完成的。 不要忘记考虑时区:)。

我希望这可以帮助你。