著者アーカイブ 村上

村上 著者:村上

Safariで「YYYY-MM-DD HH:II:SS」形式をDate.parse()するとNaNを返す問題とその対処法について

昨日この仕様でハマったので覚え書きもかねて。

JavascriptのDate.parse()とは、カッコ内の日時文字列を解析して、1970年1月1日 00:00:00からのミリ秒数に変換してくれる関数です。
具体的には下記のように使用します。

Date.parse('Thu, 1 Nov 2017 13:41:00 GMT+0900');
// =1509511260000

が、この解析できる日付文字列の形式が限られており、よくデータベースで用いられている「YYYY-MM-DD HH:II:SS」形式の日付文字列を入れてしまうとNaNを返すとのこと。

どうやら文字列の中にハイフンが入っていることが原因のようです。
また、Date.parse()だけではなく、new Date()のなかにハイフンを用いた日付文字列を入れた場合でも、同じくNaNを返す仕様になっているとのこと。
なお、一部のブラウザでは、ハイフンにも対応しているようで Google Chrome では、「YYYY-MM-DD HH:II:SS」形式でも、正しくミリ秒数が返ってきました。
普段使用しているブラウザが Google Chrome だったため、他ブラウザで動作検証するまで気が付きませんでした。

 

こちらの仕様については、ハイフンスラッシュに置換することで対応できました。
具体的なコードはこちら。

Date.parse([日付文字列].replace(/-/g , "/"));

replace関数を用いて、ハイフンをスラッシュに置換することで、無事日付のミリ秒数が取得できました。

 

以上、今回私がハマったJavascriptの関数でした。
そもそも、日付をミリ秒数に変換するなんてこと早々しないので、実際に触ってみるまで、こんな仕様になっているとは全く知りませんでした。
原因がわかってしまえば対処は難しくありませんでしたが、知らないと原因特定までに時間がかかりそうな仕様でしたので、Javascriptで日付を扱うときは十分お気を付けください。

村上 著者:村上

【イベントレポ】「第22回 テクノフェスタ in 浜松」に参加しました

少し前のことになりますが、11月11日(土)、12日(日)に静岡大学浜松キャンパスで開催されていた「テクノフェスタ in 浜松」に行ってきましたので、こちらのイベントレポです。

テクノフェスタについてはこちらの静大のHPもご確認ください。

第22回 テクノフェスタ in 浜松
http://www.eng.shizuoka.ac.jp/campuslife/festa/

様々な展示や体験ブースがありましたが、今回のお目当てはこちらの2ブース。

遊橋研究室


静岡大学生向けの時間割管理のスマートフォンアプリや、学生が開発したブロック崩しゲームが展示されていました。
ゲームに夢中になっているお子様が多く、ブースの写真は撮影できませんでした。
ブースの対面の壁には、各アプリのQRコードが貼られており、こちらから自由にインストールすることが可能でした。

木谷研究室


「RTK宝探し・リターンズ」という実験が行われており、プレイヤーは司令部と探検部に分かれて構内に隠された宝箱を探すというものでした。
RTK(Realtime Kinematic、リアルタイムキネマティック)とは、「GNSS基準局受信機を固定化して、もう一方の受信機で移動しながら各観測位置をリアルタイムに測位していくこと」です。
詳細については、こちらの「静岡大学・浜松キャンパスにGNSS基準局受信機」をご覧ください。

あまり詳しくない工学系の展示でも、こういうイベントだとつい足を止めてみてしまいます。
専門外の技術に興味をもてる良い機会でした。

また、大学祭も同日開催していたため、高校生やお子様連れのご家族の方が多くいらっしゃいました。
特に、子供向けの実験を行える「キッズ・サイエンス」ブースは大盛況でした。
子供向けとありましたが、成人済みの私も是非体験してみたかったですね。