質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

1485閲覧

Date型→String型への型変換への型変換

ataru2222

総合スコア272

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2021/06/15 07:58

編集2021/06/15 08:00

前提・実現したいこと

2つの日付の間の日数分
Date型→String型への型変換をして、String型のArrayListに格納したいです。

発生している問題・エラーメッセージ

現在2つの日付を参照してその日数分をString型のデータとして格納していくコードを書こうとしています。
[06/01,06/02,06/03,06/04, ・・・]のようなイメージです。

array_date.add(start_date.plusDays(1));
のところでparseやformatを使って型変換をしようも書き方がわからず、エラーが起きてしまうので質問させていただきました。

該当のソースコード

//date(日付)の値を格納 Date start_date = sdf.parse("2021-06-01"); Date end_date = sdf.parse("2021-06-30"); ArrayList<String> array_date = new ArrayList<String>(); long d = (end_date.getTime() - start_date.getTime()) / (1000 * 60 * 60 * 24); for(i = 0; i <= 30; i++ ) { array_date.add(start_date.plusDays(1)); }

試したこと

型変換について調べる
parseを使ったり、format()を使ったり
一度calenderクラスに変換する LocalDateクラスを使う
サイトによって混乱してしまったのですが、

直接Date型のままはString型への変換できないのでしょうか?

また2つの日付を格納する場合、forを使って最初の日付 + i をしていくような書き方が普通なのでしょうか?
他に良い方法等ありましたら教えていただけたら幸いです。

よろしくお願いいたします。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

Date型は比較的古いクラスで取り回しが悪い為、最近ではあまり使われないと前置きをしつつ

Date型には日付の加算/減算を行うメソッドが用意されていません。
その為、日付の計算を行う事が出来る機能を持つCalender型に変換し、
計算処理を行ってから再度Date型に戻すのが一般的だと思います。
※どうしてもDate型で扱いたい場合の話です。
Calender型の方が扱いやすいので、そのままCalender型で扱う事のほうが多いです。
※LocalDateへ変換して行う事も可能ですが、タイムゾーンの概念が入ってくるので注意が必要

Date型からString型への変換はSimpleDateFormatクラスで書式を定義し、
定義した書式に則って変換を行う必要があります。
(単純に文字列に変換とおっしゃいますが、日付の書式は様々なので、明確に定義してやる必要があります。))

投稿2021/06/15 08:39

Luice

総合スコア771

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ataru2222

2021/06/15 08:54

詳しく解説していただきましてありがとうございます。 CalendarやLocalDate辺りで調べてみます。
guest

0

直接Date型のままはString型への変換できないのでしょうか?

単にtoString()を呼び出す、では物足りない感じでしょうか?

投稿2021/06/15 08:28

maisumakun

総合スコア145208

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ataru2222

2021/06/15 08:57

回答していただきましてありがとうございます。 Calendar型など変換ばかりに気を取られていました。そのやり方も試してみます。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問