【参加申込受付中】
Qiita Conference 2024 Autumn 2024.11.14.thu-15.fri 17:00~PR

基調講演ゲスト(敬称略) 安野 貴博、藤本 真樹、まつもとゆきひろ、上杉 周作、石原 ニコラス

0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

iOSのブラウザでnew Date()の挙動が違うらしい

Posted at

はじめに

最近、システム上で日付を選択しても反映されないというバグ報告を受けました。当初は原因がまったく見当つかず、iOSでのみ発生している現象だということすらわかりませんでした。今回は、この問題で自分が実際につまずいた点をメモとして残しておこうと思います。

原因

問題の原因は、new Date() の挙動が iOS と Android で異なることにありました。例えば、20xx-xx-xx 形式の文字列を new Date() で日付に変換しようとした際、iOS と Android では解釈が異なります。具体的には、月や日が一桁の場合に問題が発生します。

iOS:new Date("2024-1-5") のようなフォーマット(YYYY-M-D)では、iOS はこれを適切な日付として解釈せず、Invalid Date エラーを返します。
Android:一方、Android はこの形式でも適切に日付として認識するため、エラーは発生しません。
この違いのため、特に一桁の月や日が含まれる日付を扱う際に、iOS でのみ問題が発生することがわかりました。

対策

この問題は、月や日付を必ず二桁に調整することで解決しました。一桁の月や日は先頭にゼロをつけて 01 や 09 のように二桁にすることで、iOSでも正しく日付が反映されるようになりました。

終わりに

今回、new Date() の挙動が iOS と Android で異なることを知り、非常に勉強になりました。どの OS でも同じ挙動をするように統一してほしいとは思いますが、こうした違いも今後の開発で考慮していきたいと思います。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
cug

@cug

SQLの記述が中心の会社での勤務を経て、その後Web制作会社で働き、現在はWeb系の開発会社にてフルスタックエンジニアとして勤務しております。主な使用技術はNext.js、Laravel、AWSです。 最近では、フロントエンドの開発とAWS Glueを使用したデータレイクの構築に取り組むことが多くなっています。 技術面での悩みや興味深い事例などを積極的に発信していきたいと考えています。

Comments

dgcdsbsd2
@dgcdsbsd2

iOS:new Date("2024-1-5") のようなフォーマット(YYYY-M-D)では、iOS はこれを適切な日付として解釈せず、Invalid Date エラーを返します。
Android:一方、Android はこの形式でも適切に日付として認識するため、エラーは発生しません。
この違いのため、特に一桁の月や日が含まれる日付を扱う際に、iOS でのみ問題が発生することがわかりました。

メモ: Date コンストラクター(および Date.parse と同等)で日付文字列を解釈する際には、常に入力が ISO 8601 形式 (YYYY-MM-DDTHH:mm:ss.sssZ) であることを確認してください。他の形式で解釈した場合には、その挙動は実装によって定義されていて、すべてのブラウザーで動くとは限りません。

要するに、文字列を引数とする場合、ISO8601形式以外は実装依存ということです。
(2024-1-5はISO8601形式ではありませんので、どう解釈されるかはブラウザ次第)

0

Let's comment your feelings that are more than good

Qiita Conference 2024 Autumn will be held!: 11/14(Thu) - 11/15(Fri)

Qiita Conference is the largest tech conference in Qiita!

Keynote Speaker

Takahiro Anno, Masaki Fujimoto, Yukihiro Matsumoto(Matz), Shusaku Uesugi / Nicolas Ishihara(Vercel Inc.)

View event details

Being held Article posting campaign

0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Login to continue?

Login or Sign up with social account

Login or Sign up with your email address