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 入力値をいくつか持ち,「结束」と入力されたら升顺で并び替えて(バブルソート)表示する。