昨日うるう日にしか発生しないバグに遭遇した。Javascriptを書く人には有名な話だとは思うので大して面白くはないかもしれないが一応メモ。 詳しくは書けないがバグが発生した関数の仕様としてはざっくりと下記のような感じ。 対象の年月日が基準日の1年前から1年後の間に含まれる場合はtrueを返しそうでない場合はfalseを返す 引数として2020-12-24というフォーマットの文字列が渡される(判定対象の日) 引数として2021-01-01というフォーマットの文字列が渡される(+-1年の基準日) Javascriptで書く (例) 対象の日: 2024/10/10 基準日: 2024/01/28 この時、trueになる範囲は2023/01/28 ~ 2025/01/28。なので2024/10/10はtrue。2023/01/28も2025/01/28もtrueになる。閉区間。 とあるコードの
タスクバーで日付を確認するとき、「曜日」が表示されていないことに不便を感じたことはありませんか?Windowsでは、タスクバーの日付に曜日を追加できます。この記事では、タスクバーの日付に曜日を追加する方法を解説します。 打ち合わせ中でもサッと曜日を確認できる 仕事で打ち合わせをしている最中や、資料の締め切り日を確認したいときに、パソコンで今日の日付を確認することはありませんか? Windowsではタスクバーの右端で日付を確認できますが、曜日は表示されません。タスクバーの日付をクリックすることでカレンダーが表示されるので、そこから曜日の確認はできるものの、あまり効率的とはいえないでしょう。 タスクバーの右端には、通常は日付のみが表示されています。 この記事ではWindows 11の画面を例に、タスクバーの日付に曜日を追加する方法を解説します。Windows 10でも、同様の手順で曜日の追加が
コードをローカルで確認する場合、CDN を読み込むため VSCode の拡張機能 Live Serverなどを導入し、localhost を立てれるようにしてください。 GitHub dayjs vs moment.js 最初に少しだけ小話を。 dayjs と並んでよく使われているライブラリとして moment.js が挙げられます。 なんとなく dayjs が一強になっているのかなと思ってたのですが、実際は両者どのくらいの利用差があるのか npx trends で確認してみました。 結果、どうやらまだ moment.js の方が利用率は高いようです。 しかし、dayjs も 6 年間という歴史の差をひっくり返す勢いで利用されておりトレンドとしてはやはり dayjs に向いてきているのかなと思いました。 どちらを使うかは機能面など状況によりけりだとは思いますが、両者を比較をすると以下の差が
JavaScriptの日付操作には罠が多く、業務では日付操作を簡単かつ安全に操作するライブラリが使われる。日付操作のライブラリの中でもMoment.js (opens new window)(Star数40,601)はよく知られているが、ファイルサイズが大きくパフォーマンス改善の妨げになることがある。 そこでこの記事ではより軽量でMoment.jsの代替となるdayjs (opens new window)(Star数19,872)を紹介する。 # dayjsとは dayjsとは、日付操作を簡単にするJavaScriptのライブラリだ。Moment.jsのAPIと広く互換があり、gzip圧縮されたサイズは2.71KBと軽量なのが特徴だ。 # インストール dayjsが十分Moment.jsの代わりになり得るのか確認していく。 まずはインストールして、業務で使われる日付操作をみていく。
タイトルで言いたいことがわかった人は読む必要のない話です。 サマリ Day.js は JavaScript の軽量な日付操作ライブラリで、Moment.js のAPIと互換性があるため、Moment.jsからの移行先として候補にあがることが多いです。 Moment.js との大きな違いとして、単体で Locale の情報を含んでおらず、プラグインを追加して利用する必要があります。 これについてはこの記事では割愛します。 もうひとつ、Day.js は Moment.js と違って immutable(不変オブジェクト) であるという特徴を持ちます。 個人的にこれは Moment.js と比べて優れた点であると思いますが、移行の際は気をつけないと、発覚の遅れるバグを生む危険性があります。 日本語の紹介記事をざっとググった限り、この点にちゃんと言及している記事が見つからず、誰かが不幸になりそうな
こんにちは、業務委託エンジニアの井手です。3 ヶ月ほどかけて moment.js を Day.js へと完全移行したのでその舞台裏やノウハウ、教訓についてお話ししようと思います。 なぜ moment.js を Day.js へ移行するのかmoment.js はリッチな format や parse を持たない JavaScript の Date 型を補完してくれるライブラリの先駆者として長年活躍していましたが、公式 HP に Considering using Moment in your project? There may be better modern alternatives. For more details and recommendations, please see Project Status in the docs. https://momentjs.com/とある通
Day.js の使い方・まとめ Moment.jsが非推奨なので、日付操作系のライブラリは、構文が似ており人気の高いDay.jsを採用。 1. Day.jsのインストール
問題点 面倒な日付処理をやってくれるMoment.jsですが、mutable設計が混乱を招くとして、今後は非推奨と発表しています。immutableに変更する作業も実施しないとのこと。 https://momentjs.com/guides/#/lib-concepts/mutability/ The moment object in Moment.js is mutable. This means that operations like add, subtract, or set change the original moment object. var a = moment('2016-01-01'); var b = a.add(1, 'week'); a.format(); "2016-01-08T00:00:00-06:00" // aも変更されてしまう。a.clone().
import { format, formatDistance, formatRelative, subDays } from 'date-fns' format(new Date(), "'Today is a' iiii") //=> "Today is a Sunday" formatDistance(subDays(new Date(), 3), new Date()) //=> "3 days ago" formatRelative(subDays(new Date(), 3), new Date()) //=> "last Friday at 7:26 p.m." format, formatDistance, formatRelative, subDays などの関数を import してそのまま使うだけですね。 加算 https://date-fns.org/v2.15.0
こんにちは、スターフェスティバル株式会社 エンジニアのsoriです。 今回は1つのサービス内のアプリケーションで使われている日時操作ライブラリMoment.jsを移行した際に気をつけたことなどをお話しします。 なぜ移行したのか Moment.jsは、2020年後半に「今後新機能の開発をせず、新規プロジェクトでの使用を推奨しない」旨アナウンス[1]がありました。 アナウンスとしては、Moment.jsがmutableなAPIを使用しており、immutableなものに変更するためには大きな破壊的な変更が必要になること、 また、バンドルサイズが大きいなどの問題があることが挙げられています。 個人的に使用していた感触としては、枯れたライブラリであり気軽に利用できるものであるのは確かなものの、仕様が緩い点[2]などが見受けられ、堅牢なコーディングを行うことにも障害があるように感じられました。 とはい
今回はJavascriptライブラリのmoment.jsのご紹介です。⇒詳しくは公式サイトにてご確認ください 現在のバージョンは2.12.0です。2016年4月現在 日付を取り扱うアプリケーションを使う場合は必須ですね、あまり使わない場合はdate関数を使っても良いのですが、日付の計算や今日が何曜日とか今年は閏年なのかとかこの日付は期間中の値なのかなど時間や日に関することならこのライブラリーに任せてしまいましょう。 カレンダーとか作る際にも役立ちそうですね。 それでは早速見ていきましょう。 インストール方法ですがサイトからダウンロードして使うかnpmやbowerなど使っても良いです。 moment.min.jsの方が軽くて良いのですがローカライズ版のmoment-with-locales.jsを使ってみます。英語出力以外に日本語環境が入っています。フランス語やイタリア語など他の言語も入って
下記の調査対象の日付を確認し、返り値がNaNではない場合、返り値をもとに日付を作成してDate.parseの引数とどのような違いがあるか確認します。 調査対象の日付 存在する日付(2023年2月10日) 存在しない日付(2023年2月99日) 特定の月には存在しない日付(2023年2月31日) 閏日(2024年2月29日) 調査対象のブラウザはそれぞれ使われているJSエンジンが異なる、Chrome、Safari、Firefoxを対象とします。 存在する日付の場合(2023年2月9日) // Chromeの場合 console.log(Date.parse('2023-02-09T00:00:00.000+0900')) // 1675868400000 console.log(new Date(1675868400000)) // Thu Feb 09 2023 00:00:00 GMT+
(追記 2020/09/19) Moment.js の開発が終了したようです。 ↓ ここ参照 https://momentjs.com/docs/ 今すぐライブラリが使えなくなることは無いと思いますが、この先、積極的にこのライブラリを選択するかどうかは考えものですね。 あと、GAS版のライブラリがどうなるのか、については情報が見つかりませんでした。(どなたか知ってたら教えてほしい) GASで話をしますが、Javascriptでも同じです。 GAS版 MomentライブラリのIDは下記です。 やりたかったこと こんな表を作って、毎朝8時台にGASが起動して、「締め切りまであと3日」以内になったら「締め切り近いけど大丈夫?」というリマインドをしてくれる機能を作りたい。 そのため、Momentライブラリをつかって「日付の差分」を取りたかった。 ダメだった例 簡略化するためにA2セルの日付だけを対
JavaScriptの日付操作用ライブラリである「Moment.js」の利用方法を確認します。「Moment.js」は、Dateオブジェクトをラップして、日付操作に関する様々な機能を提供します。豊富な機能が提供されていますが、利用頻度の高い機能について取り上げます。
はじめに グローバルなアプリケーションだと、地域ごとにその地域にあったタイムゾーンで時間を表示したいケースがあります。実装の方針としては大きく分けて2つあり、バックエンドで日付を変換する方法とフロントエンドで日付を変換する方法です。 今回はセレクトボックスでタイムゾーンを選択するケースを想定し、フロントエンド側で日付を変換する方法としてMoment Timezoneを使った方法を紹介します。 Moment Timezone は日付の操作に関する様々な機能を提供するJavaScriptのライブラリです。サマータイムに対応しており、自動的に日付が補正されます。 セットアップ パッケージマネージャとしてyarnを使い、Railsアプリケーションで使用する前提で説明します。まずは、moment-time-zone-with-dataをインストールします。
概要 JavaScriptでユーザーが送信した日付が、正しい日付かどうか確認したい時がありました。 今回はその方法と注意点を共有します。 この記事で伝えたいこと JavaScriptで日付のバリデーションをする際は、date-fnsのparseメソッドを使用することを推奨します。 date-fnsで日付のバリデーションを行ってみる 実行環境 項目 環境
ソフトウェア設計のトレードオフと誤り ―プログラミングの際により良い選択をするには 作者:Tomasz Lelek,Jon SkeetオライリージャパンAmazon ソフトウェア開発経験の最初の段階で「一つの機能には複数の選択肢が有って、メリット・デメリットがそれぞれ有り、それらはトレードオフの関係に有り、容易には決めることができない」という事実を教えてもらえる機会に遭遇できていれば、その人はとても幸運だと思う。 先輩や上司が一方的に、「一つの確かな方法」をただ伝える、みたいな場面(それが必ずしも一般的にはそうとは言えない方法であったとしても)も多いのではないでしょうか。 どんなに設計上の意思決定ができている人でも、その頭の中では「色々な選択肢の中で悩んで、ベストではないかもしれないけど、前の前の課題に対してよりベターな方法」を選んでいる。でもその思考の過程を見せてくれる人はとても少ない。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く