import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class DateValidator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// ユーザーã‹ã‚‰ã®å…¥åŠ›ã‚’å–å¾—
System.out.println("日付を入力ã—ã¦ãã ã•ã„(例: yyyy-MM-dd): ");
String userInput = scanner.nextLine();
// 検証ã™ã‚‹æ—¥ä»˜ãƒ•ォーマット
String dateFormatPattern = "yyyy-MM-dd";
// SimpleDateFormatを作æˆ
SimpleDateFormat dateFormat = new SimpleDateFormat(dateFormatPattern);
dateFormat.setLenient(false); // åŽ³å¯†ãªæ¤œè¨¼ã‚’行ã†ãŸã‚ã«è¨å®š
try {
// パースを試ã¿ã‚‹
Date parsedDate = dateFormat.parse(userInput);
// パースæˆåŠŸæ™‚ã®å‡¦ç†
System.out.println("入力ã•ã‚ŒãŸæ—¥ä»˜ã¯æœ‰åйã§ã™ã€‚");
} catch (ParseException e) {
// パース失敗時ã®å‡¦ç†
System.out.println("入力ã•ã‚ŒãŸæ—¥ä»˜ã¯ç„¡åйã§ã™ã€‚指定ã•れãŸãƒ•ォーマットã«åˆè‡´ã—ã¦ã„ã¾ã›ã‚“。");
}
}
}
ã“ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã§ã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‹ã‚‰ã®å…¥åŠ›ãŒ “yyyy-MM-dd” ã¨ã„ã†ãƒ•ォーマットã«åˆè‡´ã—ã¦ã„ã‚‹ã‹ã©ã†ã‹ã‚’検証ã—ã¦ã„ã¾ã™ã€‚SimpleDateFormat ã® parse メソッドを使用ã—ã¦ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‹ã‚‰ã®å…¥åŠ›ãŒæœ‰åŠ¹ãªæ—¥ä»˜ã§ã‚ã‚‹ã‹ã©ã†ã‹ã‚’確èªã—ã¦ã„ã¾ã™ã€‚例外ãŒç™ºç”Ÿã™ã‚‹å ´åˆã¯ã€å…¥åŠ›ãŒç„¡åйã§ã‚ã‚‹ã¨è¦‹ãªã—ã¾ã™ã€‚
SimpleDateFormatクラス
SimpleDateFormat クラスã¯ã€Javaã®æ—¥ä»˜ã¨æ™‚刻ã®ãƒ•ォーマットや解æžã‚’行ã†ãŸã‚ã®ã‚¯ãƒ©ã‚¹ã§ã™ã€‚ä¸»ã«æ–‡å—åˆ—ã¨æ—¥ä»˜ã‚ªãƒ–ジェクトã®ç›¸äº’変æ›ã‚’サãƒãƒ¼ãƒˆã—ã¾ã™ã€‚以下㯠SimpleDateFormat クラスã®ä¸»ãªç‰¹å¾´ã¨ä½¿ã„æ–¹ã«ã¤ã„ã¦ã®è§£èª¬ã§ã™ã€‚
1. フォーマットパターンã®å®šç¾©
SimpleDateFormat クラスã§ã¯ã€ç‰¹å®šã®ãƒ•ォーマットパターンを使用ã—ã¦æ—¥ä»˜ã‚„æ™‚åˆ»ã®æ›¸å¼ã‚’指定ã—ã¾ã™ã€‚以下ã¯ä¸€èˆ¬çš„ãªãƒ•ォーマットã®ä¸€éƒ¨ã§ã™ï¼š
y:年M:月d:日H:時 (24 時間制)h:時 (12 時間制)m:分s:秒S:ミリ秒
例ãˆã°ã€”yyyy-MM-dd HH:mm:ss” ã¯ã€Œå¹´-月-æ—¥ 時:分:ç§’ã€ã®å½¢å¼ã§ã™ã€‚
2. フォーマットã¨ãƒ‘ース
フォーマット(Date → String)
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date currentDate = new Date();
String formattedDate = dateFormat.format(currentDate);
System.out.println(formattedDate);
パース(String → Date)
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String dateString = "2023-11-26";
try {
Date parsedDate = dateFormat.parse(dateString);
System.out.println(parsedDate);
} catch (ParseException e) {
e.printStackTrace();
}
3. åŽ³å¯†ãªæ¤œè¨¼
setLenient(false) メソッドを使用ã—ã¦ã€åŽ³å¯†ãªæ¤œè¨¼ã‚’有効ã«ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€æ—¥ä»˜ã‚„時刻ã®ç¯„囲外ã®å€¤ã«å¯¾ã™ã‚‹ã‚¨ãƒ©ãƒ¼ãŒæ¤œå‡ºã•れã¾ã™ã€‚
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
dateFormat.setLenient(false);
4. ãƒã‚±ãƒ¼ãƒ«ã®è¨å®š
Locale クラスを使用ã—ã¦ãƒã‚±ãƒ¼ãƒ«ã‚’指定ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€æ—¥ä»˜ã‚„月ã®è¡¨è¨˜ãŒç•°ãªã‚‹åœ°åŸŸã«å¯¾å¿œã§ãã¾ã™ã€‚
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日", Locale.JAPAN);
SimpleDateFormat クラスをé©åˆ‡ã«åˆ©ç”¨ã™ã‚‹ã“ã¨ã§ã€æ—¥ä»˜ã¨æ™‚刻を文å—列ã«å¤‰æ›ã—ãŸã‚Šã€é€†ã«æ–‡å—列を日付オブジェクトã«å¤‰æ›ã—ãŸã‚Šã™ã‚‹ã“ã¨ãŒå®¹æ˜“ã«ãªã‚Šã¾ã™ã€‚
「013 クラスライブラリã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント