指定した日をダイアログボックスに入力し、ボタンを押下すると現在から指定までのカウントダウンを行うアプリを開発したいです。
インターネットの情報を参考に作成しようとしているのですが、JavaScriptの情報ばかりで困っています。
サンプルのコードもしくは参考サイトを教えていただきたく質問しました。
ご存知の方がいらっしゃいましたら教えてください。
よろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/19 16:08
退会済みユーザー
2016/11/21 23:52
回答3件
0
多分検索するキーワードが不適切だったのではないでしょうか。「Android アプリケーション開発」で検索すると初学者にとってもよいガイドになりそうなページがトップに出てくると思います。
私見ですが初学者にとってこれというサイトがなかなか見つからない主たる原因は「どのようなキーワードが適切なのか」自体がわからないことや、ガイド的なページであってもそこに書いてあることから十分情報を得るための基礎知識が不足しているからだと思います。こうしたことは初学者なのだから当然といえましょう。
もし自分自身でWebサイトを調べてみても「どうもよくわからない」と思ったらWebサイトで勉強するよりも初心者用の参考書を買う方が手っ取り早いのではないかと思います。
投稿2016/11/19 17:00
総合スコア18394
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/21 16:03
0
ベストアンサー
指定した日をダイアログボックスに入力し、ボタンを押下すると現在から指定までのカウントダウンを行うアプリ
指定した日までの日数計算であれば
このようにしてできます
Calendar calendar1 = Calendar.getInstance(); // Tokyo オリンピック開会式 // 2020/7/24 // Month 値は 0 から始まるので注意 calendar1.set(2020, 6, 24); // 1970/1/1 から設定した calendar1 のミリ秒 long timeMillis1 = calendar1.getTimeInMillis(); // 現在時刻のミリ秒 long currentTimeMillis = System.currentTimeMillis(); // 差分のミリ秒 long diff = timeMillis1 - currentTimeMillis; // ミリ秒から秒へ変換 diff = diff / 1000; // minutes diff = diff / 60; // hour diff = diff / 60; // day diff = diff / 24; TextView textView = (TextView)findViewById(R.id.text_view); String str = String.valueOf(diff)+" 日"; textView.setText( str );
Ref: https://akira-watson.com/android/calendar_period.html
指定日と現在時間のミリ秒の差分なので
1時間刻みなどもできるでしょう
検索キーは
「android アプリケーション 開発 Calendar 日数計算」ですが他にも色々ありますよ
日付の入力は
「android アプリ 開発 DatePicker DialogFragment」
あたりで出てくると思います。DatePickerは古い情報では混乱するところがあるので新しいのがいいでしょう
投稿2016/11/20 06:23
編集2016/11/20 06:28総合スコア3733
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/21 16:06
2016/11/23 14:41
2016/11/23 19:55
2016/11/24 00:18
2016/11/24 09:44
0
以下のコードでは
20180101
21001107
などの形で年月日を半角数値で入力するとボタンを押した瞬間からその日の午前0時までの秒数をカウントダウンします
何かの参考にはなるのではないでしょうか
java
1import javax.swing.*; 2import java.awt.event.*; 3import java.io.*; 4import java.text.SimpleDateFormat; 5import java.util.Date; 6import java.time.*; 7import java.time.format.*; 8import java.time.ZoneOffset; 9import java.awt.*; 10import java.text.*; 11import java.util.*; 12import java.util.Timer; 13 14import java.time.Instant; 15 16public class Push2 extends JFrame { 17 JButton button; 18 JTextField inputfield; 19 Container container; 20 inEventListener listener; 21 static JLabel jlabel; 22 static String a = ""; 23 24 public Push2(String label) { 25 super(label); 26 listener = new inEventListener(); 27 28 container = getContentPane(); 29 container.setLayout(new BoxLayout(container, BoxLayout.Y_AXIS)); 30 31 JPanel panel; 32 33 panel = new JPanel(); 34 panel.setLayout(new FlowLayout()); 35 panel.add(new JLabel("年月日")); 36 panel.add(inputfield = new JTextField(6)); 37 container.add(panel); 38 39 panel = new JPanel(); 40 panel.setLayout(new FlowLayout()); 41 button = new JButton("カウント開始"); 42 button.addActionListener(listener); 43 panel.add(button); 44 container.add(panel); 45 } 46 47 class inEventListener implements ActionListener { 48 public void actionPerformed(ActionEvent e) { 49 Object source = e.getSource(); 50 if (source == button) { 51 52 a = inputfield.getText().trim(); 53 new Thread() { 54 public void run() { 55 while (true) { 56 SimpleDateFormat sdf = new SimpleDateFormat( 57 "yyyyMMdd"); 58 LocalDateTime dat2 = LocalDateTime.now(); 59 60 Instant in1 = dat2.toInstant(ZoneOffset 61 .of("+00:00")); 62 63 String s = dat2.toString(); 64 65 long n2 = 0; 66 try { 67 68 Date dat = sdf.parse(a); 69 int c = Integer.parseInt(a); 70 int year = c / 10000; 71 int month = (c % 10000) / 100; 72 int day = c % 100; 73 74 LocalDateTime dat3 = LocalDateTime.of(year, 75 month, day, 0, 0, 0); 76 Instant in2 = dat3.toInstant(ZoneOffset 77 .of("+00:00")); 78 79 Duration n = Duration.between(in1, in2); 80 81 n2 = n.toMillis() / 1000; 82 83 System.out.println(n2 + "sec"); 84 85 } catch (Exception r) { 86 } 87 88 jlabel.setText(" 残り " + String.valueOf(n2) + "秒"); 89 if (n2 == 0) { 90 jlabel.setText("終了"); 91 92 try { 93 Thread.sleep(1000); 94 } catch (Exception r) { 95 } 96 97 System.exit(0); 98 } 99 Container c2 = getContentPane(); 100 c2.setLayout(new BorderLayout()); 101 c2.add(jlabel, BorderLayout.CENTER); 102 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 103 setSize(150, 200); 104 setVisible(true); 105 try { 106 Thread.sleep(10); 107 } catch (Exception r) { 108 } 109 110 } 111 } 112 }.start(); 113 114 } 115 } 116 117 } 118 119 public static void main(String[] args) { 120 JFrame jframe = new Push2("タイマー"); 121 jframe.pack(); 122 jframe.setVisible(true); 123 124 jlabel = new JLabel(); 125 126 jframe.addWindowListener(new WindowAdapter() { 127 public void windowClosing(WindowEvent e) { 128 System.exit(0); 129 } 130 }); 131 } 132} 133
投稿2016/11/19 18:37
編集2016/11/19 19:03退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/21 16:05
退会済みユーザー
2016/11/21 16:22
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。