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

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

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

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

1357閲覧

日付の値

ikenirubasyu

総合スコア54

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2015/12/04 00:00

編集2015/12/10 06:07

日付(2015/12/01)のデータを取り出したいのですが、わかる方がいましたら、ご教授お願いいたします。

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

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

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

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

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

miyabi-sun

2015/12/04 00:12

[この質問](https://teratail.com/questions/21634)と何が違うのですか? そのものズバリな回答を貰ったにも関わらず、 ほぼ同じ質問が出てくる時点で「全く理解出来なかった」わけですよね。 では何故「ありがとうございます」と解決済みになったのでしょうか? そこをまず説明しなければ誰も答えられませんよ。
ikenirubasyu

2015/12/04 00:44

miyabiさん 私の質問をいつも見て頂だいているようで本当にありがとうございます。確かに読み直してみたところ同じ質問をしていたことに気が付きましたが、今回は好きな日付を入力した時に、その日付の中データを調べられるのかなと思って書きました。前回と似ていてわかりずらかったことと、自分に理解度がなかったこと申し訳ないです,,,。
miyabi-sun

2015/12/04 00:49

強い書き方になってしまい失礼しました。以前の回答を踏まえた上で、関数の作り方…という形の質問と捉えて、お昼の休憩時間にでも回答出来ればと思います。
guest

回答2

0

ベストアンサー

データは前回と同じくミリ秒のみなのでしょうか。
それとも、後ろにコロンと数字が付いているのでしょうか。

とりあえず、後者で動くように書きました。
/*だけの行を/**/にすると前者のデータを使用するようになります。

JavaScript

1//var str = document.getElementById("test").value;//どうにかしてフォームの値を取得 2var str = "2015/12/3" //今回はテスト値 3var res = str.search( /\d{4}/\d{1,2}/\d{1,2}/);// 文字列は"YYYY/M/d"の形式か? 4if(res != -1){ 5 var array = str.split("/");//与えられた日付をスラッシュ"/"で分割 6 var y, m, d; 7 y = array[0] - 0; // 文字列を数値に変換 8 m = array[1] - 1; // 月は0始まりなので1を引く 9 d = array[2] - 0; // 文字列を数値に変換 10 var from = Date.UTC(y,m,d,0,0,0,0); 11 var to = Date.UTC(y,m,d,23,59,59,999); // toが当日23時59分59秒999の場合 12 //var to = Date.UTC(y,m,d + 1,0,0,0,0);// toが翌日0時0分0秒の場合 13/* 14 var array = [1449118867945, 1449118829106, 1449118158387]; 15 for(var i = 0; i < array.length; i++){ 16 if (array[i] <= to && array[i] >= from){ 17 // array[i]がデータなので好きにする 18 } 19 } 20/*/ 21 var array = ["1449119421683:1", "1449119490805:2", "1449119548880:3"]; 22 23 for(var i = 0; i < array.length; i++){ 24 var ms = (array[i].split(":"))[0]; 25 if (ms <= to && ms >= from){ 26 // array[i]がデータなので好きにする 27 } 28 } 29/**/ 30}else{ 31 //日付の形式がおかしいので処理不能 32}

投稿2015/12/04 01:29

moredeep

総合スコア1507

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

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

0

@moredeep さんのロジックをお借りして関数にしてみます。

var str = "2015/12/3"; //今回はテスト値 var array = [1449118867945, 1449118829106, 1449118158387]; var filterd_array = oneday_data(array, str); // これがお目当てのデータ function oneday_data(date, data) { var res = data.search( /^\d{4}/\d{1,2}/\d{1,2}$/);// 文字列は"YYYY/M/d"の形式か? if(res != -1){ var array = data.split("/");//与えられた日付をスラッシュ"/"で分割 var y, m, d; y = array[0] - 0; // 文字列を数値に変換 m = array[1] - 1; // 月は0始まりなので1を引く d = array[2] - 0; // 文字列を数値に変換 var from = Date.UTC(y,m,d,0,0,0,0); var to = Date.UTC(y,m,d+1,0,0,0,0); var results = []; for(var i = 0; i < array.length; i++){ if (array[i] <= to && array[i] > from){ results.push(array[i]); } } return results; } else { //日付の形式がおかしいので処理不能 return []; } }

こんな感じに適用していきます。
(多少ワタシ好みにロジックを改変していますが、全体的な流れはこういう形になると思います)
自作関数を作成する能力は今後のプログラミング人生で役に立つので、私と一緒に勉強していきましょう!
(私もまだまだ初学者です…)

※BAはもしするなら私ではなく、@moredeepさんにお願いします。

投稿2015/12/04 05:28

miyabi-sun

総合スコア21158

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問