お世話になります。
タイムカードの活用をしようと
「https://developer.cybozu.io/hc/ja/articles/202181714」
を利用しようと思うのですが、日本時間8時台に処理を実行した場合、
時間が32時となってしまい正しく9時をすぎないと打刻できません。
どのように対処すればよいか、アドバイスいただけないでしょうか。
よろしくお願いいたします。
お世話になります。
タイムカードの活用をしようと
「https://developer.cybozu.io/hc/ja/articles/202181714」
を利用しようと思うのですが、日本時間8時台に処理を実行した場合、
時間が32時となってしまい正しく9時をすぎないと打刻できません。
どのように対処すればよいか、アドバイスいただけないでしょうか。
よろしくお願いいたします。
青山昌司 さん
各関数の処理で、時間部分を getUTCHours() + 9 で時間を算出してますね。
全処理の UTC と +9 消して getHours() のみで恐らく影響でないと思います。
サーバーから時間をとって、そのあと Date() 型にしてるんで UTC にする必要も、+9 もする必要ないはずなのですが、その処理のせいで影響が出てます。
ついでに、明確にずれるのは 日 だけだと思いますが、ほかの日時の値も UTC の部分消しておいてください。
しぶい様
お世話になります。
無事表示が正しくなりました。
ありがとうございました。
UTC と +9 を削除しましたが、「getMonth() + 1, 2);」のとこは「+1」を残し、
「+ ‘:00+09:00’」は削除しましたがこちらも問題ありませんでしょうか?
何卒ご教授の程よろしくお願いいたします。
青山昌司 さん
はい、そこは +1 があっても問題はありません。
JS の仕様の話でややこしいのですが、getMonth() は、取得する月 - 1 が返り値として返されます。
わかりやすく言うと 1月に取得した場合、返り値は 0 になり、12月に取得した場合、返り値は 11 になります。
今回の処理の場合は、サーバーから取得した値を Date型に変換していますが、変換した結果から取得しても上記の動作は同じです。
現時点(4月)での話なら、サーバーから取得できる値は確かに 4月なのですが、Date型に変換した時点で getMonth() の値は 3 になります。
そのため getMonth() で当月を求めるときは返り値に +1 を行います。
しぶい様
お世話になります。
なるほど大変勉強になります。
お付き合いいただきありがとうございました。
今後ともよろしくお願いいたします