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

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

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

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

2回答

671閲覧

日付が1日変わるごとに数字が1上がるシステムを作りたいです

nakagen

総合スコア24

JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

1グッド

0クリップ

投稿2021/01/06 11:07

前提・実現したいこと

・日付が1日変わるごとに数字が1上がるシステムを作りたい

現在、植物への水やりの頻度が適切であるかどうかを判断する仕組みを作成しているのですが、「日付が1日変わるごとに数字が1上がる」というのは、「水をやらなかった期間」として計算をしたいです。

また、水を植物に渡したときは、ボタンで、「水をやらなかった期間」の数値をリセットできるようにしたいと思います。

日付が1日変わるごとに数字が1上がるシステムについて、どなたかアイデアやサンプルをご存知であれば教えて頂きたいです…

よろしくお願いします

該当のソースコード

javafx

1class meEventHandler implements EventHandler<ActionEvent>{ 2 public void handle(ActionEvent e3) { 3 stage4 = new Stage(); 4 LocalDateTime d1 = LocalDateTime.now(); 5 DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm"); 6 String df1 = df.format(d1); 7 lb = new Label(""); 8 lb2 = new Label(df1); 9 ch1 = new CheckBox("水やり"); 10 ch2 = new CheckBox("晴れ"); 11 bt1 = new Button("設定"); 12//if文で警告枠の作成 13if(res <= 0) { 14 lb2.setText("みずやりすぎ!"); 15 } 16 else if(res == 2){ 17//水が足りない場合のシステムを考えているのですが浮かびません… 18 lb2.setText("みずたりない!"); 19 } 20 BorderPane bp =new BorderPane(); 21 VBox hb = new VBox(); 22 VBox hb1 = new VBox(); 23 hb.getChildren().add(ch1); 24 hb.getChildren().add(ch2); 25 hb.setAlignment(Pos.CENTER); 26 hb1.getChildren().add(lb); 27 hb1.getChildren().add(bt1); 28 hb1.setAlignment(Pos.CENTER); 29 bp.setLeft(hb); 30 bp.setCenter(hb1); 31 Scene sc = new Scene(bp, 400, 400); 32 stage4.setScene(sc); 33 stage4.show(); 34 ch1.setOnAction(ae -> { 35 res1 = res - res; 36 }); 37 ch2.setOnAction(ae -> { 38 39 40 //チェックボタンで、総水量と総日光量の計算が出来るようにする(なお、変数は総水量と総日光量と比べる基準とする) 41 //警告枠の作成 42 }); 43 44 } 45 }

試したこと

if文で警告枠の作成
actionで計算

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

jdk14

TN8001👍を押しています

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

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

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

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

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

guest

回答2

0

ベストアンサー

あまりうるさいことは言いたくないのですが、双方にお互いのリンクぐらい載せてください。

[Q&A] 日付が1日変わるごとに数字が1upされるシステムをつくりたいです - Qiita


・日付が1日変わるごとに数字が1上がるシステムを作りたい

逆で水をやった時(ボタンを押したとき?)に、今の日付をファイルにでも書いておけばいいのでは?
今の日付とファイルの日付の差が、「水をやらなかった期間」です。

Main.java

Java

1import javafx.application.Application; 2import javafx.scene.Scene; 3import javafx.scene.control.Button; 4import javafx.scene.layout.BorderPane; 5import javafx.stage.Stage; 6 7 8public class Main extends Application { 9 public static void main(String[] args) { launch(args); } 10 11 @Override public void start(Stage primaryStage) { 12 BorderPane root = new BorderPane(); 13 Button button = new Button("水やり"); 14 button.setOnAction(new Me2EventHandler()); 15 16 root.setCenter(button); 17 primaryStage.setScene(new Scene(root, 500, 400)); 18 primaryStage.show(); 19 } 20}

Me2EventHandler.java

Java

1import java.io.IOException; 2import java.nio.charset.StandardCharsets; 3import java.nio.file.Files; 4import java.nio.file.Paths; 5import java.time.LocalDateTime; 6import java.time.format.DateTimeFormatter; 7import java.time.temporal.ChronoUnit; 8import java.util.Arrays; 9import java.util.List; 10 11import javafx.event.ActionEvent; 12import javafx.event.EventHandler; 13import javafx.geometry.Pos; 14import javafx.scene.Scene; 15import javafx.scene.control.Button; 16import javafx.scene.control.Label; 17import javafx.scene.layout.BorderPane; 18import javafx.scene.layout.VBox; 19import javafx.stage.Stage; 20 21public class Me2EventHandler implements EventHandler<ActionEvent> { 22 public void handle(ActionEvent e3) { 23// stage4 = new Stage(); のように親の変数をいじらない!! 24 Stage stage = new Stage(); 25 26 Label label = new Label(); 27 28 Button button = new Button("水"); 29 button.setOnAction(ae -> { 30 try { 31 LocalDateTime now = LocalDateTime.now(); 32 Files.write(Paths.get("date.txt"), Arrays.asList(LocalDateTime.now().toString()), StandardCharsets.UTF_8); 33 DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm"); 34 String date = df.format(now); 35 label.setText("前回水やり: " + date + "\n0日前"); 36 } catch (IOException e) { 37 e.printStackTrace(); 38 } 39 }); 40 41 try { 42 List<String> lines = Files.readAllLines(Paths.get("date.txt"), StandardCharsets.UTF_8); // ファイルを1行毎のリストに読み込み 43 LocalDateTime old = LocalDateTime.parse(lines.get(0)); 44 LocalDateTime now = LocalDateTime.now(); 45 46 long diffDays = ChronoUnit.DAYS.between(old, now); 47 48 DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm"); 49 String date = df.format(old); 50 51 label.setText("前回水やり: " + date + "\n" + diffDays + "日前"); 52 } catch (IOException e) { 53 label.setText("前回水やり: 不明"); 54 } 55 56 BorderPane borderPane = new BorderPane(); 57 VBox box = new VBox(button); 58 box.setAlignment(Pos.CENTER); 59 borderPane.setLeft(box); 60 borderPane.setCenter(label); 61 stage.setScene(new Scene(borderPane, 400, 400)); 62 stage.show(); 63 } 64}

投稿2021/01/07 09:33

TN8001

総合スコア9396

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

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

nakagen

2021/01/11 09:49 編集

分かりました、これから質問をしていくときは、なるべく他のサイトでも質問をしたページを貼っていきたいと思います・・・。また、上記のコードなのですが、text.dateはカレンダーの日付を記載するシステムということでしょうか・・・?一度、作動してみます。
TN8001

2021/01/11 10:35

>これから質問をしていくときは、なるべく他のサイトでも質問をしたページを貼っていきたいと思います・・・。 質問はいつでも編集できますので、これからといわず追記してください(先方サイトもおそらく同様と思います) >text.dateはカレンダーの日付を記載するシステムということでしょうか・・・? date.txtのことでしょうか?? まあ動かせば一目瞭然ですが、「テキストファイルに日付を記録した」ってだけですね。 プログラムは1文字でも違ったら動かなくなるので、注意深さが必要です。
nakagen

2021/02/05 05:03

すみません、このシステムについて2つ質問をさせて頂きたいことがあるのですが可能でしょうか・・・?よろしくお願いします。
guest

0

定期的(数分ごと?数十分ごと?)に今日の日付を読み込み、前回と日が変わっていれば+1すればいいです。

投稿2021/01/06 11:17

y_waiwai

総合スコア87800

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

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

nakagen

2021/01/06 11:28

前回と日が変わった場合って、例えば、2日から5日だと+3みたいなイメージでしょうか?
y_waiwai

2021/01/06 11:42

正確に日数を出す必要があるなら、最初の日付を保存しておいて現在日付との差分を出す必要がありますね
nakagen

2021/01/06 11:48

という場合ですと、ボタン1で最初の日の設定、ボタン2で差分の計算ということになるのでしょうか?なるべく、自動的に+1をしていくようにしたいのですが、もし可能でしたら参考のためのコードを作っていただくことは可能でしょうか?烏滸がましいようですが、宜しくお願い致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問