メシのタネ

めしのたねになるIT情報配信サイト


JS 時差を計算して時分秒に変換する

,

  1. Webプログラム
  2. javascript
  3. JS 時差を計算して時分秒に変換する

サイトの人気が延びなくて悩む人のず
IEでもChoromeでも使えないコードで、FireFoxでしかブラウザではJSはnew Dateへ入れるhour(時間って書くとhourなのか時刻なのかわかりづらい)が24以上だとNaNを返してきやがるので動かないんですけど、とある環境だとNaNを返さず、getTimeで差を計算すると上手くhourの差が取れてくるっぽいのでgetTimeで取れてくる値は進んでいるようですね。そんなん使う人は多分こんなとこ検索してこないと思うんですが、明日使うのでここに載せて自分が確認する為に書いておこうとおんもいます。

ミリ秒を時分に換算する式

これはミリ秒さえ取れれば計算ができます。

h = ミリ秒/3600000
m = (ミリ秒-h*3600000)/6000

簡単ですね。

時刻を自分に変換するプログラム

一例として

var from = "08:00"
var to = "37:30"

var Y = new Date().getFullYear()
var M = new Date().getMonth()+1
var D = new Date().getDate()

var ymd = Y+"/"+M+"/"+D+"/"

var fromTime = new Date(ymd+" "+from).getTime()
var toTime = new Date(ymd+' '+to).getTime()
var Ms = toTime-fromTime

var h = ''
var m = ''

h = Ms/3600000
m = (Ms-h*3600000)/6000
var jikan = h+m;
console.log(jikan)
//29.5

こうやれば29時間30分が取れてきますね。ブラウザでもFireFox使えばできますね。JSでやってって言われてもIEとChoromeは25時以降計算してくれないからエラー吐いて23までの数字を入れて貰いましょうって提案しましょう。でもそうすると、08:00から32:00まで働く人はどうすればいいのとか言われたりするんですね。怖い世の中になりましたね。いろんな意味でね。

まぁとにかくこれで、計算できるということは、new Date(ymd+’ ‘+to).getTime()のところですが、ここに25:00以上が入ってますが、時間差が取れてるんですね。取れてるってことは、ミリ秒は大きくなってるってことですね。ほかのブラウザだと24以上は0,1,2,3,4とするロジックが必要になってくるのと、24の倍数に合わせて日付のカウントアップが必要になります。どうしょうもないくらい暇だったら研究してみようかなぁ。OJTの教材や入社試験にも良さそうですねー。

※3600000は1時間Msです


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.

若い頃、「仕事中にハマったこと」や「誰かに共有したい技術的な気づき」をアウトプットしたくてブログを始めましたが、勢い任せでよく分からない記事を大量生産し、あえなく飽きて終了。

改めて今、キャリア15年分の経験や知識が、これからITエンジニアを目指す方や、同じような課題で悩んでいる現役エンジニアの「メシのタネ」になるような記事を残したいと思っています。
※過去の記事は見ると精神が崩壊するため、そっとしておいてください。

🛠 経歴という名の珍道中:
文系Fラン → 広告営業 → Web営業 → 通信営業 → Web進行 → 出版 → Web媒体運用 → ソフトウェアハウス → SES → フリーランス

専門教育も受けず、転職歴も多数。履歴書はまるで時系列の事故記録のようですが、試行錯誤を重ね、なんとかエンジニアとして食べています。

このブログでは、そんな「履歴書クラッシャー型エンジニア」が送る、
名古屋一敷居の低い、実務に役立つ技術ブログを目指します。

API
RESTってつまり何?Webエンジニアが悩まないためのAPI設計入門New!!
Laravel
【Laravel入門】ルーティングの基本と実践活用まとめ:仕組み・書き方・落とし穴までNew!!
google
【保存版】GA4 Consent Mode v2完全対応マニュアル:UA脱却からタグ発火までに、今やるべき3つのことNew!!
Laravel
マジで爆速でLaravelエンジニアになる方法はこれしかない(無料)New!!
javascript
npm(Node.js)のインストール方法を初心者向けに解説New!!
Laravel
Laravelで承認リンクやメール認証URLのパラメータを安全に扱う方法(バリデーション付き)