javaの時間関連クラスには、DataクラスとCanlendarクラスが含まれます。
データクラス
1.パラメータなしのコンストラクタを使用します
Data nowTime = new Date()
#输出的就是当前的时间
2.パラメータを持つコンストラクタはここでは説明されなくなりました
さらに、Systemクラスの静的関数public long currentTimeMillis()は、システムの現在の時刻、1970年1月1日の8時からの時差を取得でき、戻り値はミリ秒数です。
通常、データタイプは便利なようにカレンダータイプに変換されます。
转换函数:
//Date类型转Calendar类型
public static Calendar dataToCalendar(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.setTime(date);
return calendar;
}
カレンダー
カレンダーインスタンスを初期化します
Calendar calendar = Calendar.getInstance();
カレンダーから時間、年、月、日などの情報を取得できます。
具体的なコードは次のとおりです。
実現機能:特定の時刻と現在の時刻との時差が、年、月、日、時、分、秒の順に最大の時差で出力されます。
主函数:
StringTokenizer fenxi = new StringTokenizer(getTime("2020-07-29 11:37:17"),"|");
int[] result = new int[2];
int i = 0;
while (fenxi.hasMoreTokens()){
result[i] = Integer.parseInt(fenxi.nextToken());
i++;
}
String[] time_list = {
"年","月","天","小时","分钟","秒"};
System.out.println(""+result[0]+time_list[result[1]]+"前");
public static String getTime(String log_time){
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date time_now = new Date();
long diff = 0;
String CountTime = "";
int year=0,month=0,day=0;
long hours=0,minutes=0,s=0;
try {
Date time_ago = df.parse(log_time);
diff = time_now.getTime() - time_ago.getTime();
Calendar currentTimes =dataToCalendar(time_now);//当前系统时间转Calendar类型
Calendar pastTimes =dataToCalendar(time_ago);//查询的数据时间转Calendar类型
year = currentTimes.get(Calendar.YEAR) - pastTimes.get(Calendar.YEAR);//获取年
month = currentTimes.get(Calendar.MONTH) - pastTimes.get(Calendar.MONTH);
day = currentTimes.get(Calendar.DAY_OF_MONTH) - pastTimes.get(Calendar.DAY_OF_MONTH);
if (month < 0) {
month = (month + 12) % 12;//获取月
year--;
}
if (day < 0) {
month -= 1;
currentTimes.add(Calendar.MONTH, -1); //减一个月
day = day + currentTimes.getActualMaximum(Calendar.DAY_OF_MONTH);//获取日
}
long days = diff / (1000 * 60 * 60 * 24);
hours = (diff-days*(1000 * 60 * 60 * 24))/(1000* 60 * 60); //获取时
minutes = (diff-days*(1000 * 60 * 60 * 24)-hours*(1000* 60 * 60))/(1000* 60); //获取分钟
s=(diff/1000-days*24*60*60-hours*60*60-minutes*60);//获取秒
CountTime=""+year+"年"+month+"月"+day+"天"+hours+"小时"+minutes+"分"+s+"秒";
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println(CountTime);
return year != 0 ? ""+year+"|"+0 :
month != 0 ? ""+month+"|"+1 :
day != 0 ? ""+day+"|"+2 :
hours != 0 ? ""+hours+"|"+3 :
minutes != 0 ? ""+minutes+"|"+4 : ""+s+"|"+5 ;
}
输出结果:2月前