【jQuery/DataTables】invalid dateになるとき、値の型を確認すべし!

f:id:bonoponz:20201025190855p:plain

もくじ

invalid date

タイムスタンプを日付に変更しようと試みていた時のことです。

ものによってきちんと日付に変換されるデータもあればinvalid dateとなってしまいデータが表示されないものがあるという現象にでくわしました。

f:id:bonoponz:20201028180629p:plain

型を確認

データを更新したタイミングで型が変わってしまうこともあるので、今回はそのタイミングで起こりました。

下のstringとなっているデータが、更新したデータです。

f:id:bonoponz:20201028181943p:plain

タイプを確認する関数があるのでそれを使いましょう。

gettype(型を調べたい値)
$hoge = 123;
$foo = "123";

echo gettype($hoge); // 結果:integer
echo gettype($foo); // 結果:string
typeof(型を調べたい値)
var hoge = 123;
var foo = "123";

const A = typeof(hoge);
const B = typeof(foo);

console.log(A); // 結果:number
console.log(B); // 結果:string

実際、invalid dateとなっている値の型を見てみると、stringとなっており、integer型のものはきちんとタイムスタンプとして認識してくれているので日付が表示されていたことがわかります。

意識しないと忘れがちな“型”

気づくのに1時間ほどかかってしまいましたが、気づいてしまえば単純な原因だったりします。

型を意識しておけば、エラーにぶちあたったときに解決の糸口になるかもしれませんね。

参考URL

typeof - JavaScript | MDN

PHP: gettype - Manual

Display blank instead of "Invalid date" for a date column. — DataTables forums