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

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

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

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

Q&A

解決済

3回答

3910閲覧

JSで曖昧な時間を返したい

yuta0801

総合スコア270

JavaScript

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

0グッド

0クリップ

投稿2017/05/13 04:29

編集2017/05/13 04:37

###前提・実現したいこと
JavaScriptでミリ秒から曖昧な時間を出したいです

IF文やswitch文を繋げる方法もあると思いますが、
実際によく使われる方法が知りたいのです

  • 1時間秒 => 1時間
  • 6時間秒 => 半日
  • 5日時間分*秒 => 5日

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

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

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

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

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

yuba

2017/05/13 04:30

「曖昧な時間」とはどんな時間のことでしょう?
yuta0801

2017/05/13 04:33

一時間**分**秒だったら一時間のような多少の誤差を切り捨てた時間のことです
yuba

2017/05/13 04:35

丸めたいと言うことですね。もう少し詰めてみましょうか。多少の誤差、をどう定義しますか?
yuta0801

2017/05/13 04:37

例で追加したような感じです
guest

回答3

0

やりたいことは、日時分秒形式で表示するときに最上位の部分だけを表示したい、ということですね。

Moment.js使うのがスマートでしょうか。
言語を日本語にすれば、相対時間を大体お望みの通りの文字列にしてくれます。

投稿2017/05/13 04:50

yuba

総合スコア5568

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

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

退会済みユーザー

退会済みユーザー

2017/05/13 05:19

このライブラリ、フォーマット変換用のものだと思うので、結局条件式書かなくてはならず、今回の仕様ではあまり意味が無い気がします。
honami

2017/05/13 05:28

>日時分秒形式で表示するときに最上位の部分だけを表示 という処理では >6時間*分*秒 => 半日 が実現されないように思います。
退会済みユーザー

退会済みユーザー

2017/05/13 05:31

質問が編集されているみたいですね。 編集前の質問への回答としては正しいかと。 なんで質問者BAつけたんだろ^^;
yuba

2017/05/13 05:32

「大体」と書いた理由がその「半日」があったせいです。 処理の最終段階で"6時間"→"半日"という置換を入れることで解決でしょうか。 "16時間"→"1半日"と変換してしまわないように注意!
guest

0

ベストアンサー

Javascript

1var date = new Date(); 2var interval = 60; // 丸めたい間隔(この場合60分刻み) 3var coeff = 1000 * 60 * interval; 4var rounded_date = new Date(Math.round(date.getTime() / coeff) * coeff) 5// Sat May 13 2017 14:12:49 GMT+0900 (JST) → May 13 2017 14:00:00 GMT+0900 (JST) 6 7

基本的にJavaScript上で時間を丸める処理はこのようにします。
5分間隔で丸めたい場合は

Javascript

1var interval = 5; 2 3//Sat May 13 2017 14:12:49 GMT+0900 (JST) → Sat May 13 2017 14:15:00 GMT+0900 (JST) 4

となります。

が、コメントでもおっしゃられているように多少の誤差の定義が曖昧であるので(5日6時間だった場合、5日と半日に丸めるのか。あるいは5日かなど。)、
それらの定義をきちんとした上で、丸める間隔を条件分岐などする処理が必要であると思います。

投稿2017/05/13 05:22

honami

総合スコア308

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

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

0

曖昧な時間の仕様が曖昧すぎてよく分かりませんが、決まったロジックを持つのであれば、if if else 辺りで、条件を時間として切れ目なくつなげるのが一般的だと思います。

** 追記 **
面白いライブラリを見つけました。
twitter-relative-time-js

今回の仕様とは合致しないので、自分用のメモですがw

投稿2017/05/13 05:02

編集2017/05/13 06:02
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

yuta0801

2017/05/13 06:23

あら、偶然にも今そのようなのを探してました! ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問