ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|---|
|
エラーの状況
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date d = sdf.parse("2026/05/15"); // パターンとフォーマットが不一致
// → java.text.ParseException: Unparseable date: "2026/05/15"
SimpleDateFormat はパターン(yyyy-MM-dd)に厳密に従って文字列をパースします。入力文字列がパターンに合わないと ParseException。
パターン記号の落とし穴
| 記号 | 意味 | よくあるミス |
|---|---|---|
yyyy | 年(4 桁) | YYYY は week-year(ISO 週ベース、年末年始でずれる) |
MM | 月(数字 01-12) | mm は分 |
dd | 日 | DD は年間通日(1-366) |
HH | 時(24h 00-23) | hh は 12h(00-11) |
mm | 分 | MM は月 |
ss | 秒 | SS はミリ秒(実は SSS が標準) |
SSS | ミリ秒 | 3 桁固定 |
a | AM/PM | ロケール依存 |
z | タイムゾーン名 | JST 等 |
Z | タイムゾーンオフセット | +0900 等 |
原因と対処
原因 1: パターンと入力フォーマットが一致しない
// 間違い: パターンは - 区切りなのに入力は / 区切り
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
sdf.parse("2026/05/15"); // 失敗
// 修正
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
sdf.parse("2026/05/15"); // 成功
原因 2: 入力に余分な文字(空白・改行・タブ)
String input = " 2026-05-15 \n";
sdf.parse(input); // 失敗
// 修正
sdf.parse(input.trim());
原因 3: タイムゾーンや AM/PM が含まれる
// 入力: "2026-05-15 14:30:00 JST"
// パターン: "yyyy-MM-dd HH:mm:ss" → JST 部分でエラー
// 修正
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z");
sdf.parse("2026-05-15 14:30:00 JST");
原因 4: ロケール依存(英語 vs 日本語の曜日・月名)
// 入力: "May 15, 2026" を日本語環境でパース → 失敗
SimpleDateFormat sdf = new SimpleDateFormat("MMM dd, yyyy");
sdf.parse("May 15, 2026"); // 日本ロケールだと「5月」を期待してしまう
// 修正: ロケールを明示
SimpleDateFormat sdf = new SimpleDateFormat("MMM dd, yyyy", Locale.ENGLISH);
sdf.parse("May 15, 2026"); // 成功
原因 5: 厳密モード(lenient)の罠
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
sdf.parse("2026-13-99"); // デフォルトでは lenient = true なので、自動補正してパース成功
// 「13 月 99 日」→「2027-04-08」相当に解釈されてしまう
// 厳密モードに
sdf.setLenient(false);
sdf.parse("2026-13-99"); // ParseException
Java 8 以降は DateTimeFormatter を使う(推奨)
SimpleDateFormat はスレッドセーフではないなどの問題があり、Java 8+ では java.time.format.DateTimeFormatter が推奨です。
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
try {
LocalDate date = LocalDate.parse("2026-05-15", formatter);
System.out.println(date);
} catch (DateTimeParseException e) {
System.err.println("パース失敗: " + e.getMessage());
}
// ISO 形式 (yyyy-MM-dd) なら formatter 不要
LocalDate date = LocalDate.parse("2026-05-15");
// 日時の場合
LocalDateTime dt = LocalDateTime.parse("2026-05-15T14:30:00");
// タイムゾーン付き
ZonedDateTime zdt = ZonedDateTime.parse("2026-05-15T14:30:00+09:00[Asia/Tokyo]");
SimpleDateFormat vs DateTimeFormatter 比較
| 項目 | SimpleDateFormat | DateTimeFormatter |
|---|---|---|
| スレッドセーフ | × 不可 | ○ イミュータブル |
| パッケージ | java.text | java.time.format |
| パース例外 | ParseException (checked) | DateTimeParseException (unchecked) |
| タイムゾーン | 面倒 | 明確 |
| 不変オブジェクト | × | ○ |
| 推奨度 | レガシー | ○ Java 8+ |
関連記事
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
同階層のページ
- java.lang.NoSuchMethodError
- java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Date
- java.lang.UnsupportedClassVersionError
- version less than X.X is not supported.
- パッケージ~は存在しません
- org.apache.jasper.JasperException: ...The jsp:param action must not be...
- java.io.FileNotFoundException: ファイル名 (許可がありません)
- java.sql.SQLException: Cannot convert value 'YYYY-MM-DD ...' from column n(YYYY-MM-DD ...) to TIMESTAMP.
- 警告: この文字は、エンコーディング[文字コード]にマップできません
- java.text.ParseException: Unparseable date
- Unsupported major.minor version 52.0
- エンティティ" ... "への参照は';'デリミタで終了する必要があります。
- java.math.BigDecimal cannot be cast to java.lang.String
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?