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

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

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

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

JavaScript

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

Q&A

3回答

2311閲覧

JSON 日付の値を一括変換処理し現在日時と比較したい

chibiyuko_0124

総合スコア18

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

JavaScript

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

0グッド

1クリップ

投稿2018/11/15 06:05

編集2018/11/15 06:54

いつもお世話になっております。
JSONの値が世界標準時間なので日本時間に変換後、現在日時と比較処理したいと思っています。
日本時間への変換には成功はしたのですが、同じように処理したい値が複数あります。
まとめてひとつのソースで処理にしたいのですが、どのようにすれば良いでしょうか。
また、それぞれ現在日時と比較したいのでそれぞれキーを保持したいです。

json

[ { "date1":"2005-09-26T15:00:00.000Z", "date2":"2005-09-26T15:00:00.000Z", "date3":"2018-08-19T15:00:00.000Z" }, { "date1":"2005-10-26T15:00:00.000Z", "date2":"2005-10-26T15:00:00.000Z", "date3":"2018-12-19T15:00:00.000Z" } ]

js

var arr = new Date(date1); var year = arr.getFullYear(); var month = arr.getMonth() + 1; var day = arr.getDate(); var h = arr.getHours(); var i = arr.getMinutes(); var s =arr.getSeconds(); var date1_data = year + '年' + month + '月' + day + '日 + h + ‘:’+ i + ‘:’+ s;

上記処理をdate2、date3も全く同じようにしたいです。

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

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

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

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

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

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

madoka9393

2018/11/15 06:11

JavaではなくJavaScriptの質問ですかね?
chibiyuko_0124

2018/11/15 06:56

すみません!JavaScriptを選択したはずが間違っておりました。直しました。
guest

回答3

0

どのようにすれば良いでしょうか。

関数にしましょう。
質問文にあった日時から日本語日時のロジックを流用して関数化してみました。

JavaScript

1var toJPN = function (iso) { 2 var arr = new Date(iso); 3 var year = arr.getFullYear(); 4 var month = arr.getMonth() + 1; 5 var day = arr.getDate(); 6 var h = arr.getHours(); 7 var i = arr.getMinutes(); 8 var s =arr.getSeconds(); 9 return year + '年' + month + '月' + day + '日 + h +:+ i +:+ s; 10}

現在日時と比較したい

これも必要なタイミングで比較出来るよう、関数化しておきましょう。

JavaScript

1var isFuture = function (iso) { 2 return (new Date()) < (new Date(iso)); 3}

それぞれ現在日時と比較したいのでそれぞれキーを保持したいです。

関数があれば何時でも日本語時刻には変換出来ます。
ですので、本当に使う瞬間までは元の値と関数の2つを保持するようにしてください。
そうすればわざわざ「キー」等という新しいデータを作る必要はなくなります。

ソースコードは小説で、変数は登場人物です。
貴方は1文節の度に登場人物が増える小説を読みたいですか?
それと同じで、ソースコードは変数が多すぎると登場人物過多の小説と同じで読みづらくなります。
無理して変数を作らないようにする必要はありませんが、必要最小限の変数だけ用意することだけ心がけましょう。

JSONの値が世界標準時間なので日本時間に変換後、現在日時と比較処理したいと思っています。

ここの考え方ですが、なぜ貴方は日本時刻に変換しなければならないのでしょうか?
突き詰めれば、「非エンジニアが出力結果の文字列を見た時に読みづらいと感じるから」になるでしょう。

実際デベロッパーツール等で開いて見た時に日本語の時刻文字列だと嬉しいのは分かりますが、
ISOの時刻はそのまんまnew Date(time)として投げ込んで上手いこと解釈される優秀なフォーマットなんです。
私の経験則でこのフォーマットを出来るだけ維持しておくと何かと都合が良いです。

画面に出力するタイミングで先程の関数toJPNと一緒に使うようにしましょう。

JavaScript

1// 使用例 2$('.hogehoge').text(toJPN(date1));

投稿2018/11/15 08:26

miyabi-sun

総合スコア21158

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

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

0

JavaScript

1function isNew(rawDate) { 2 var now = new Date(); 3 var date = new Date(rawDate); 4 return now > date; 5} 6console.log(isNew('2019-01-01')); 7console.log(isNew('2018-11-15T12:00:00.000z')); 8console.log(isNew('2018-11-14T12:00:00.000z'));

false
false
true

投稿2018/11/15 06:11

kunai

総合スコア5405

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

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

0

全ての値に対して日付変換をかけるところまで。

JavaScript

1var json = [ 2{ 3"date1":"2005-09-26T15:00:00.000Z", 4"date2":"2005-09-26T15:00:00.000Z", 5"date3":"2018-08-19T15:00:00.000Z" 6}, 7{ 8"date1":"2005-10-26T15:00:00.000Z", 9"date2":"2005-10-26T15:00:00.000Z", 10"date3":"2018-12-19T15:00:00.000Z" 11} 12]; 13 14json.forEach(function(element){ 15 for(key in element){ 16 check(key,element[key]); 17 } 18}); 19 20function check(dateKey,date){ 21 var arr = new Date(date); 22 var year = arr.getFullYear(); 23 var month = arr.getMonth() + 1; 24 var day = arr.getDate(); 25 var h = arr.getHours(); 26 var i = arr.getMinutes(); 27 var s =arr.getSeconds(); 28 var date1_data = year + '年' + month + '月' + day + '日 + h + ‘:’+ i + ‘:’+ s'; 29  //日付比較用の処理にdateKeyとdate1_dataを渡すなりなんなり 30}

投稿2018/11/15 06:29

編集2018/11/15 06:41
madoka9393

総合スコア992

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問