java 入力値を年月日として现在の年月日と比较した结果(过去か未来か同じか)を表示する。引数の数や书式(入力する日付の书式と,出力する结果の日付の书式)等は自由に実装。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 入力値を年月日として现在の年月日と比较した结果(过去か未来か同じか)を表示する。引数の数や书式(入力する日付の书式と,出力する结果の日付の书式)等は自由に実装。相关的知识,希望对你有一定的参考价值。
public class JudgeThreeWorlds{
int line = 0;
static String[] date;
static int yyyy;
static int mm;
static int dd;
static String formatDate;
public static void main(String[] args){
// 入力処理
try{
BufferedReader bfReader = new BufferedReader(new InputStreamReader(System.in));
System.out.println("年月日を「yyyymmdd」, 「yyyy/mm/dd」, 「yyyy-mm-dd」, 「yyyy:mm:dd」のいずれかで入力してください");
checkValidate(bfReader.readLine());
bfReader.close();
} catch (DateFormatException e) {
System.out.println(e.getMessage());
System.exit(-1); // プログラムを終了
} catch (IOException e){
System.exit(-1); // プログラムを終了
}
Calendar calendar1 = Calendar.getInstance();
calendar1.set(Calendar.YEAR, yyyy);
calendar1.set(Calendar.MONTH, mm - 1);
calendar1.set(Calendar.DATE, dd);
calendar1.set(Calendar.MILLISECOND, 360);
Calendar now = Calendar.getInstance();
now.set(Calendar.MILLISECOND, 360);
int diff = now.compareTo(calendar1);
if(diff == 0){
System.out.println(formatDate + " は今日です");
}else if(diff > 0){
System.out.println(formatDate + " は過去です");
}else if(diff < 0){
System.out.println(formatDate + " は未来です");
}
}
/**
* inputがnullでない、かつ既定のフォーマット以外であればDateFormatExceptionを投げる
* 現在入力可能なフォーマット
* 「yyyymmdd」, 「yyyy/mm/dd」, 「yyyy-mm-dd」, 「yyyy:mm:dd」
* @param value
*/
private static void checkValidate(String value) throws DateFormatException{
if(value != null){
if(value.indexOf("/") > 0){
date = value.split("/");
yyyy = Integer.parseInt(date[0]);
mm = Integer.parseInt(date[1]);
dd = Integer.parseInt(date[2]);
formatDate = yyyy + "年" + mm + "月" + dd + "日";
}else if(value.indexOf("-") > 0){
date = value.split("-");
yyyy = Integer.parseInt(date[0]);
mm = Integer.parseInt(date[1]);
dd = Integer.parseInt(date[2]);
formatDate = yyyy + "年" + mm + "月" + dd + "日";
}else if(value.indexOf(":") > 0){
date = value.split(":");
yyyy = Integer.parseInt(date[0]);
mm = Integer.parseInt(date[1]);
dd = Integer.parseInt(date[2]);
formatDate = yyyy + "年" + mm + "月" + dd + "日";
}else if(value.indexOf("_") > 0){
date = value.split("_");
yyyy = Integer.parseInt(date[0]);
mm = Integer.parseInt(date[1]);
dd = Integer.parseInt(date[2]);
formatDate = yyyy + "年" + mm + "月" + dd + "日";
}else if(value.length() == 8){
yyyy = Integer.parseInt(value.substring(0, 4));
mm = Integer.parseInt(value.substring(4, 6));
dd = Integer.parseInt(value.substring(6, 8));
formatDate = "" + yyyy + mm + dd;
}else{
throw new DateFormatException();
}
}
}
}
/**
* 入力可能なフォーマットでないときに発生させる例外
*/
class DateFormatException extends Exception{
public DateFormatException(){
super("入力された日付のフォーマットが正しくありません");
}
}
以上是关于java 入力値を年月日として现在の年月日と比较した结果(过去か未来か同じか)を表示する。引数の数や书式(入力する日付の书式と,出力する结果の日付の书式)等は自由に実装。的主要内容,如果未能解决你的问题,请参考以下文章
java コマンドラインから入力を受け付け,入力値を逆転して出力
sh 〜/ Dropbox / dotfilesを来源に指定しているdotfilesのsymlinkをGoogleDriveを来源として作成しなおす
javascript 入力シートをコピーして指定の范囲のセルの値を初期化する。
scss 上海社会科学院の混入を使用して大众の値を自动计算する
scss 上海社会科学院の混入を使用して大众の値を自动计算する
java 入力値をいくつか持ち,「结束」と入力されたら升顺で并び替えて(バブルソート)表示する。