import?java.util.Scanner;
創(chuàng)新互聯(lián)主打移動網(wǎng)站、成都做網(wǎng)站、網(wǎng)站建設、網(wǎng)站改版、網(wǎng)絡推廣、網(wǎng)站維護、域名與空間、等互聯(lián)網(wǎng)信息服務,為各行業(yè)提供服務。在技術實力的保障下,我們?yōu)榭蛻舫兄Z穩(wěn)定,放心的服務,根據(jù)網(wǎng)站的內(nèi)容與功能再決定采用什么樣的設計。最后,要實現(xiàn)符合網(wǎng)站需求的內(nèi)容、功能與設計,我們還會規(guī)劃穩(wěn)定安全的技術方案做保障。
public?class?TimeFormatException?extends?Exception?{
public?void?printException()?{
System.out.println("輸入時間錯誤!!程序結束");
}
public?TimeFormatException()?{
}
public?void?printDate()?throws?TimeFormatException?{
boolean?bStop?=?true;
Scanner?input?=?new?Scanner(System.in);
String?reg?=?"([0-1][0-9]|2[0-4]):([0-5][0-9])";
while?(bStop)?{
System.out.println("請輸入時間:");
String?str?=?input.next();
if?(str.matches(reg))?{
int?hour?=?Integer.parseInt(str.substring(0,?2));
String?minutes?=?str.substring(2,?5);
if?(hour??12)
System.out.println("現(xiàn)在時間是:"?+?Integer.toString(hour).concat(minutes)?+?"?am");
else?if?(hour?==?12)
System.out.println("現(xiàn)在時間是:"?+?Integer.toString(hour).concat(minutes)?+?"?pm");
else?if(hour?==?24)
System.out.println("現(xiàn)在時間是:"?+?"00".concat(minutes)?+?"?am");
else
System.out.println("現(xiàn)在時間是:"?+?Integer.toString(hour?-?12).concat(minutes)?+?"?pm");
}?else?{
bStop?=?false;
throw?new?TimeFormatException();
}
}
}
public?static?void?main(String[]?args)?{
try?{
new?TimeFormatException().printDate();
}?catch?(TimeFormatException?e)?{
e.printException();
}
}
}
如果看不懂 盡管問 ch_felix168_88@163.com
用java代碼實現(xiàn):
public static String longToDate(long lo){?
Date date = new Date(lo);?
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); ?
return sd.format(date);
}
資料拓展:
長整型(long)是計算機程序語言,是程序設計中數(shù)據(jù)類型的一種表現(xiàn)方式,一般情況下用long 表示長整型。 long 有符號64位整數(shù),范圍是-2^63-2^63 -1 Int64。
思路是先計算兩個日期相差的毫秒數(shù),然后分別根據(jù)每天的毫秒數(shù)、每小時的毫秒數(shù)、每分鐘的毫秒數(shù)來計算相差幾天,幾小時,幾分鐘。具體代碼如下:
public static String getDatePoor(Date endDate, Date nowDate) {
long nd = 1000 * 24 * 60 * 60;//每天毫秒數(shù)
long nh = 1000 * 60 * 60;//每小時毫秒數(shù)
long nm = 1000 * 60;//每分鐘毫秒數(shù)
long diff = endDate.getTime() - nowDate.getTime();?// 獲得兩個時間的毫秒時間差異
long day = diff / nd;?? // 計算差多少天
long hour = diff % nd / nh;?// 計算差多少小時
long min = diff % nd % nh / nm;? // 計算差多少分鐘
return day + "天" + hour + "小時" + min + "分鐘";
}
然后做一個測試,調用這個方法測試一下:
可以看出兩個日期時間相差幾天,幾小時,幾分鐘都可以算出來。
擴展資料:
Java使用以下三種方法來比較兩個日期:
1、使用 getTime() 方法獲取兩個日期(自1970年1月1日經(jīng)歷的毫秒數(shù)值),然后比較這兩個值。
2、使用方法 before(),after() 和 equals()。例如,一個月的12號比18號早,則 new Date(99, 2, 12).before(new Date (99, 2, 18)) 返回true。
3、使用 compareTo() 方法,它是由 Comparable 接口定義的,Date 類實現(xiàn)了這個接口。
參考資料:
Oracle官方API接口-Util-Date
Oracle官方API接口-SimpleDateFormat
菜鳥教程-Java 日期時間
提供一個時間操作類給你,你可以調用里面的dateDiff方法,dateDiff(new Date(), getDateFromString("明天的字符串")表示的就是現(xiàn)在到明天0點之前的差距天數(shù)。
你要分鐘數(shù)的話就自己改一下dateDiff,不要除以60和24就是分鐘了
以下是工具類代碼
import?org.apache.log4j.Logger;
import?java.text.ParseException;
import?java.text.SimpleDateFormat;
import?java.util.Calendar;
import?java.util.Date;
public?class?AdDateUtil?{
private?static?Logger?logger?=?Logger.getLogger(AdDateUtil.class);
static?public?String?getNowStr(String?format)?{
SimpleDateFormat?sdf?=?new?SimpleDateFormat(format);
String?now?=?sdf.format(new?Date());
return?now;
}
static?public?Date?getFormatDate(String?date,?String?format)?{
SimpleDateFormat?sdf?=?new?SimpleDateFormat(format);
Date?d?=?new?Date();
try?{
d?=?sdf.parse(date);
}?catch?(ParseException?e)?{
logger.error(e);
}
return?d;
}
static?public?String?getDateStr(Date?date,?String?format)?{
SimpleDateFormat?sdf?=?new?SimpleDateFormat(format);
String?d?=?sdf.format(date);
return?d;
}
static?public?String?getPadZeroString(String?s,?int?size)?{
StringBuffer?sb?=?new?StringBuffer();
for?(int?i?=?0;?i??(size?-?s.length());?i++)?{
sb.append("0");
}
sb.append(s);
return?sb.toString();
}
/**
*?得到某月的天數(shù)
*
*?@param?year
*?@param?month
*?@return
*/
static?public?int?getDayCountOfMonth(String?year,?String?month)?{
Calendar?cal?=?Calendar.getInstance();
//?年
cal.set(Calendar.YEAR,?Integer.parseInt(year));
//?月,因為Calendar里的月是從0開始,所以要-1
cal.set(Calendar.MONTH,?Integer.parseInt(month)?-?1);
return?cal.getActualMaximum(Calendar.DAY_OF_MONTH);
}
static?public?String?getYesterday(String?format)?{
SimpleDateFormat?df?=?new?SimpleDateFormat(format);
Calendar?now?=?Calendar.getInstance();
now.roll(Calendar.DAY_OF_YEAR,?-1);?//昨天
return?df.format(now.getTime());
}
/**
*?獲取和今天附近的某天
*?@param?format
*?@param?diff
*?@return
*/
static?public?String?getADay(String?format,?int?diff)?{
SimpleDateFormat?df?=?new?SimpleDateFormat(format);
Calendar?now?=?Calendar.getInstance();
int?beforeM?=?now.get(Calendar.MONTH);
now.roll(Calendar.DAY_OF_YEAR,?diff);?//
int?nowM?=?now.get(Calendar.MONTH);
//必須進行日期處理,否則2009-01-04日前七天是2009-12-28
if?(nowM??beforeM)?{
now.roll(Calendar.YEAR,?-1);
}
return?df.format(now.getTime());
}
static?public?String?getTomorrow(String?format)?{
SimpleDateFormat?df?=?new?SimpleDateFormat(format);
Calendar?now?=?Calendar.getInstance();
now.roll(Calendar.DAY_OF_YEAR,?1);?//明天
return?df.format(now.getTime());
}
/**
*?得到最近num天的全部日期
*?說明:
*?1.日期是從昨天開始算的.
*?2.如果num=2?,?日期是2008-03-14?,則返回的結果為?2008-03-12、2008-03-13
*?@param?num
*?@return
*/
public?static?String[]?getDaysByNum(int?num,?String?date)?{
SimpleDateFormat?sdf?=?new?SimpleDateFormat("yyyy-MM-dd");
String[]?result?=?{??};
Calendar?cal?=?Calendar.getInstance();
cal.setTime(getDateFromString(date,?"yyyy-MM-dd"));
//最近一周
result?=?new?String[num];
for?(int?i?=?num;?i??0;?i--)?{
cal.add(Calendar.DAY_OF_YEAR,?-1);
result[i?-?1]?=?sdf.format(new?Date(cal.getTimeInMillis()));
}
return?result;
}
public?static?Date?getDateFromString(String?dateStr,?String?format)?{
if?((dateStr?==?null)?||?(format?==?null))?{
try?{
throw?new?Exception("數(shù)據(jù)類型異常"?+?dateStr?+?"|"?+?format);
}?catch?(Exception?e)?{
logger.error("數(shù)據(jù)類型異常:"?+?e);
}
}
SimpleDateFormat?df?=?new?SimpleDateFormat(format);
Date?date;
try?{
date?=?df.parse(dateStr);
return?date;
}?catch?(Exception?ex)?{
logger.error(ex);
return?new?Date();
}
}
static?public?int?getNowYear()?{
Calendar?cal?=?Calendar.getInstance();
return?cal.get(Calendar.YEAR);
}
static?public?int?getNowMonth()?{
Calendar?cal?=?Calendar.getInstance();
return?cal.get(Calendar.MONTH)?+?1;
}
public?static?String[]?getMonthRang(String?year,?String?month)?{
String?beginDate?=?year?+?"-"?+?month?+?"-01";
String?endDate?=?year?+?"-"?+?month?+?"-"?+
getDayCountOfMonth(year,?month);
return?getDaysByRang(beginDate,?endDate);
}
public?static?String[]?getDaysByRang(String?beginDate,?String?endDate)?{
SimpleDateFormat?sdf?=?new?SimpleDateFormat("yyyy-MM-dd");
//得到兩個日期間相差多少天
int?num?=?dateDiff(beginDate,?endDate);
if?(num??0)?{
//顛倒一下日期
String?tmp?=?beginDate;
beginDate?=?endDate;
endDate?=?tmp;
num?=?0?-?num;
}
String[]?result?=?{??};
Calendar?cal?=?Calendar.getInstance();
try?{
cal.setTime(sdf.parse(beginDate));
}?catch?(ParseException?e)?{
e.printStackTrace();
}
num?=?num?+?1;?//把開始和結束日期都包含進去
result?=?new?String[num];
for?(int?i?=?0;?i??num;?i++)?{
if?(i??0)?{
cal.add(Calendar.DAY_OF_YEAR,?1);
}
result[i]?=?sdf.format(new?Date(cal.getTimeInMillis()));
}
return?result;
}
public?static?int?dateDiff(String?beginDate,?String?endDate)?{
SimpleDateFormat?sdf?=?new?SimpleDateFormat("yyyy-MM-dd");
Date?date?=?null;
try?{
date?=?sdf.parse(endDate);
}?catch?(ParseException?e)?{
date?=?new?Date();
e.printStackTrace();
}
long?end?=?date.getTime();
try?{
date?=?sdf.parse(beginDate);
}?catch?(ParseException?e)?{
date?=?new?Date();
e.printStackTrace();
}
long?begin?=?date.getTime();
long?day?=?(end?-?begin)?/?(1000?*?3600?*?24);?//除1000是把毫秒變成秒
return?Integer.parseInt(Long.toString(day));
}
public?static?void?main(String[]?args)?{
System.out.println(AdDateUtil.getADay("yyyy-MM-dd",?-7));
}
}