【検証追加】iOS7のcalshow:の引数を計算するjavascript
// リストを作成 DATE = [ { year : 2001, month : 1, day : 1, hour : 0, minute : 0, second : 0, }, { year : 2002, month : 1, day : 1, hour : 0, minute : 0, second : 0, } ]; // 時差の設定 var timeZone = 9; // カレンダーのデフォルトを設定 var date_obj = new Date(DATE[0].year, DATE[0].month-1, DATE[0].day, DATE[0].hour, DATE[0].minute, DATE[0].second, 000); var apple = (date_obj / 1000); // ユーザの日時指定 var date2_obj = new Date(DATE[1].year, DATE[1].month-1, DATE[1].day, DATE[1].hour-timeZone, DATE[1].minute, DATE[1].second, 000); var user = (date2_obj / 1000) // calshow:用に桁数を調整 var argumentTime = ((user - apple) < 1000000000) ? ("00000000"+(user - apple)).slice(-9) : (user - apple); if((user - apple) < 0) argumentTime = argumentTime.replace(/(0*?)\-/ , "-$1"); // 引数の値 alert(argumentTime); // var urlscheme = "calshow:"; // location.href=urlscheme + argumentTime;
検証結果
- 2000年1月1日0時0分0秒
- calshow:-31654800
- 2001年1月1日0時0分0秒
- calshow:-00032400
- 2001年1月1日9時0分0秒
- calshow:000000000
- 2002年1月1日0時0分0秒
- calshow:031503600
- 2013年9月5日0時0分0秒
- calshow:399999600
- 2013年9月6日0時0分0秒
- calshow:400086000
- 2013年9月12日0時0分0秒
- calshow:400604400
- 2013年9月16日0時0分0秒
- calshow:400950000
- 2032年9月9日10時46分39秒
- calshow:999999999
問題点 解決済み
9桁に限定しているので
2032年9月9日10時46分39秒を超えると
9桁から外れてしまい正しい日付を取得できません
if文でも使えば解決できそう。
追記・修正点
17時11分
早速コードを直しました。
- 2069年1月1日0時0分0秒
- calshow:2145884400
19時00分
時差の範囲内で値が不正になる問題を修正しました。
if((user - apple) < 0) argumentTime = argumentTime.replace(/(0*?)\-/ , "-$1");
// 修正前
- 2001年1月1日0時0分0秒
- calshow:000-32400
// 修正後
- 2001年1月1日0時0分0秒
- calshow:-00032400