2012-10-29 26 views
1

我如何获得前一天晚上11:59 PM和今晚12:00 AM以long值表示?Android获取日期为long值

所以很多不同的日期选项我很困惑

+1

'长'值相对于什么?你有约会吗?或者你只是想要他们代表多少秒钟? (86399 vs 0) – Eric

+0

根据手机的当前日期在今晚12:00 AM和前一晚在11:59 PM。我使用它作为游标,所以游标接受长的值不是日期 –

回答

0

您可以使用此计算这样做。

//11:59 PM of the previous night and 12:00 AM of tonight 

    Calendar prevDate = Calendar.getInstance(); 
    if(prevDate.get(Calendar.DATE)==1) 
    { 
     if(prevDate.get(Calendar.MONTH)==0) 
     { 
      prevDate.set(Calendar.YEAR, prevDate.get(Calendar.YEAR)-1); 
      prevDate.set(Calendar.MONTH,Calendar.DECEMBER); 
      prevDate.set(Calendar.DAY_OF_MONTH,31); 
     } 
     else 
     { 
      prevDate.set(Calendar.MONTH,prevDate.get(Calendar.MONTH)-1); 
      prevDate.set(Calendar.DAY_OF_MONTH, prevDate.getMaximum(Calendar.DAY_OF_MONTH)); 
     } 
    } 
    else 
    { 
     prevDate.set(Calendar.DAY_OF_MONTH,prevDate.get(Calendar.DAY_OF_MONTH)-1); 
    } 

    prevDate.set(Calendar.HOUR_OF_DAY, 11); 
    prevDate.set(Calendar.MINUTE, 59); 

    Calendar currDate = Calendar.getInstance(); 
    currDate.set(Calendar.HOUR_OF_DAY, 0); 
    currDate.set(Calendar.MINUTE, 0); 

    long prevDateLong = prevDate.getTimeInMillis(); 
    long currDateLong = currDate.getTimeInMillis(); 

    Log.i("", prevDate.toString()+" >>>>>>>> "+currDate.toString()); 
    Log.i("", prevDateLong+" >>>>>>>>> "+currDateLong); 
+0

非常感谢你 –

+0

currDate.set(Calendar.HOUR_OF_DAY,0);应该是currDate.set(Calendar.HOUR_OF_DAY,24); –

0

所有的Java日期都在下面。这是自1970年1月1日午夜以来的毫秒数。

Date today = new SimpleDateFormat("yyyy-MMM-dd").parse("2012-Oct-28"); // today at midnight 
long millis = today.getTime(); 

我建议你看看java.util.Calendar类。这并不难,只是单调乏味。

http://www.exampledepot.com/search/luceneapi_node/Calendar

+0

是的,但那会得到一个硬编码的日期。我今天要在凌晨12:00根据电话日历的当前日期 –

+0

和前一天晚上 –