您好,登錄后才能下訂單哦!
本文實(shí)例講述了Android編程實(shí)現(xiàn)計(jì)算兩個(gè)日期之間天數(shù)并打印所有日期的方法。分享給大家供大家參考,具體如下:
以下代碼是計(jì)算兩個(gè)日期之間的天數(shù),并打印所有日期
注:開(kāi)始時(shí),增加天數(shù)時(shí),一天的毫秒數(shù)直接用24*60*60*1000來(lái)逐步增加天數(shù),再測(cè)試時(shí)發(fā)現(xiàn),當(dāng)兩個(gè)日期之間的天數(shù)超過(guò)24天時(shí),打印的日期反而在開(kāi)始日期之前了,(如打印2016/12/18-2017/1/23,打印的日期反而有2016/12/1),后來(lái)發(fā)現(xiàn)原因在于24*60*60*1000是一個(gè)int值,int值的取值范圍在2的31次方:+/- 2147483648,當(dāng)超過(guò)最大數(shù)時(shí),就會(huì)變成最小數(shù),這樣反而導(dǎo)致日期變小,將24*60*60*1000變?yōu)閘ong類(lèi)型的值即可:private long static final long ONE_DAY_MS=24*60*60*1000
/** * 計(jì)算兩個(gè)日期之間的日期 * @param startTime * @param endTime */ private void betweenDays(long startTime,long endTime,long mills_select,int code){ Date date_start=new Date(startTime); Date date_end=new Date(endTime); //計(jì)算日期從開(kāi)始時(shí)間于結(jié)束時(shí)間的0時(shí)計(jì)算 Calendar fromCalendar = Calendar.getInstance(); fromCalendar.setTime(date_start); fromCalendar.set(Calendar.HOUR_OF_DAY, 0); fromCalendar.set(Calendar.MINUTE, 0); fromCalendar.set(Calendar.SECOND, 0); fromCalendar.set(Calendar.MILLISECOND, 0); Calendar toCalendar = Calendar.getInstance(); toCalendar.setTime(date_end); toCalendar.set(Calendar.HOUR_OF_DAY, 0); toCalendar.set(Calendar.MINUTE, 0); toCalendar.set(Calendar.SECOND, 0); toCalendar.set(Calendar.MILLISECOND, 0); int s = (int) ((toCalendar.getTimeInMillis() - fromCalendar.getTimeInMillis())/ (ONE_DAY_MS)); if(s>0){ for(int i = 0;i<=s;i++){ long todayDate = fromCalendar.getTimeInMillis() + i * ONE_DAY_MS; /** * yyyy-MM-dd E :2012-09-01 */ Log.i("打印日期",Utils.getCustonFormatTime(todayDate,"yyyy-MM-dd")); } }else {//此時(shí)在同一天之內(nèi) Log.i("打印日期",Utils.getCustonFormatTime(startTime,"yyyy-MM-dd")); } }
Utils.getCustonFormatTime()
方法代碼如下:
/** * 格式化傳入的時(shí)間 * * @param time 需要格式化的時(shí)間 * @param formatStr 格式化的格式 * @return */ public static String getCustonFormatTime(long time, String formatStr) { SimpleDateFormat format = new SimpleDateFormat(formatStr); Date d1 = new Date(time); return format.format(d1); }
PS:這里再為大家推薦幾款關(guān)于日期與時(shí)間計(jì)算的在線工具供大家參考使用:
在線日期/天數(shù)計(jì)算器:
http://tools.jb51.net/jisuanqi/date_jisuanqi
在線萬(wàn)年歷日歷:
http://tools.jb51.net/bianmin/wannianli
在線陰歷/陽(yáng)歷轉(zhuǎn)換工具:
http://tools.jb51.net/bianmin/yinli2yangli
Unix時(shí)間戳(timestamp)轉(zhuǎn)換工具:
http://tools.jb51.net/code/unixtime
更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Android日期與時(shí)間操作技巧總結(jié)》、《Android開(kāi)發(fā)入門(mén)與進(jìn)階教程》、《Android基本組件用法總結(jié)》、《Android視圖View技巧總結(jié)》、《Android布局layout技巧總結(jié)》及《Android控件用法總結(jié)》
希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。