【Java】StringからIntにしたりDateからStringにしたりStringをDateにしたり

テスト用に、データベースに入れる情報を用意→データベースに登録→登録した情報を取り出して比較、というロジックを作ったら、入れる用のデータはJSONで受け取る前提だから全部Stringで渡さなきゃいけなくて、出してくるデータはテーブルカラム通りの型で出てくるもんだから困ったね、ということで全部変換していくよ!
とりあえずざっくりキャストできればOK!細かいフォーマットの違いとか例外が発生する文字が入ってきたらとかスレッドセーフとかの面倒なことは考えないよ!!

StringからIntegerへ変換する

Integer 数値 = Integer.parseInt("数字に変換できる文字列")

数字に変換できない文字列が渡ってしまったときは例外が発生するので、Try-Chatchの中に配置すること。
もしくは、assertの引数の中で

登録情報クラス 登録情報 = テストデータ作成メソッド();
Object result = テストデータを登録して結果を返してくれる的なメソッド(登録情報);

assertEquals(Integer.parseInt(登録情報.get価格()), result.get("価格"));

みたいにすればTry-Chatch不要です。

IntegerからStringへ変換する

Integer 数値 = 123
String 文字列 = 数値.toString()

とりあえずこれだけ。

DateをStringへ変換する

// result = データベースから取ってきた情報が入っているObject
String 文字列にした日付 = result.get("CreatedAt").toString()

これだけでとりあえずStringになりますが、区切り文字「-」が入るので適宜replaceで置き換えたり除去したりが必要です。
ちゃんとフォーマットしたいときはDateTimeFormatterで検索すると幸せになれそうです。

StringをDateに変換する

mySQLのdate型のカラムからぽんともってきた値はJava.Util.Date型になっているっぽいので、ちょっと作り出すのに手間がかかります。

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Date;

// 中略

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
LocalDate 日付_LocalDate = LocalDate.parse("2024/2/8", formatter);
Date 日付 = java.sql.Date.valueOf(日付_LocalDate);

DateTimeFormatterを使って「今からこのフォーマットの文字列が行きます」という設定をしてあげて、文字列とフォーマッタを渡して一旦LocalDateを作ってあげて、さらにそこからJava.Util.Dateを作る感じです。


この記事が気に入ったらサポートをしてみませんか?