文字列がunixタイムスタンプであるかどうかを確認する
2023-10-31 11:25:23
質問
文字列があり、それが unix タイムスタンプであるかどうかを調べる必要があります。
私は見つけた このスレッド を Google 経由で見つけましたが、残念ながらあまり確かな答えは出てきません。(そして、はい、私は前述のスレッドのオリジナル投稿者から質問をパクりました)。
どのように解決するのですか?
さて、しばらくいじった後、私は解決策を撤回しました。
date('U')
を使った解決策を撤回し、代わりにこれを使うことを提案します。
function isValidTimeStamp($timestamp)
{
return ((string) (int) $timestamp === $timestamp)
&& ($timestamp <= PHP_INT_MAX)
&& ($timestamp >= ~PHP_INT_MAX);
}
このチェックは、与えられた
$timestamp
が
文字列
で、数字とオプションのマイナス文字のみで構成されています。また、数値は整数のビット範囲内である必要があります (
EDIT
:
は不要です。
).
var_dump( isValidTimeStamp(1) ); // false
var_dump( isValidTimeStamp('1') ); // TRUE
var_dump( isValidTimeStamp('1.0') ); // false
var_dump( isValidTimeStamp('1.1') ); // false
var_dump( isValidTimeStamp('0xFF') ); // false
var_dump( isValidTimeStamp('0123') ); // false
var_dump( isValidTimeStamp('01090') ); // false
var_dump( isValidTimeStamp('-1000000') ); // TRUE
var_dump( isValidTimeStamp('+1000000') ); // false
var_dump( isValidTimeStamp('2147483648') ); // false
var_dump( isValidTimeStamp('-2147483649') ); // false
PHP_INT_MAXのチェックは、文字列が正しく
date
などで正しく使用できるようにするためです。
echo date('Y-m-d', '2147483648'); // 1901-12-13
echo date('Y-m-d', '-2147483649'); // 2038-01-19
64 ビット システムでは、整数はもちろんそれよりも大きく、この関数はもはや "2147483648" および "-2147483649" に対して false を返すのではなく、対応するより大きな数字に対して false を返します。
(*) 注:100%確実ではありませんが、ビット範囲は日付が使用できるものに対応しています。
関連
-
[解決済み】「Fatal error: Class 'MySQLi' not found "を解決するには?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] MySQLでdatetimeとtimestampのどちらのデータ型を使用すべきですか?
-
[解決済み] ある文字列が特定の単語を含んでいるかどうかを確認するにはどうすればよいですか?
-
[解決済み] time(1) の出力における 'real', 'user' および 'sys' はどのような意味ですか?
-
[解決済み] JavaScriptでUnixのタイムスタンプを時刻に変換する
-
[解決済み] 2つの日付範囲が重なっているかどうかを判定する
-
[解決済み] UnixのタイムスタンプをDateTimeに、またはその逆に変換するにはどうすればよいですか?
-
[解決済み] C#でunixのタイムスタンプを取得する方法
-
[解決済み】文字列をdatetimeに変換する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Notice: 非オブジェクトのプロパティを取得しようとしているエラー
-
[解決済み】新しいPHPMailerはPHPMailerAutoload.phpが必要?
-
[解決済み】stdClassクラスのオブジェクトが文字列に変換されない。
-
[解決済み】 $_SERVER['DOCUMENT_ROOT'] と $_SERVER['HTTP_HOST'] の違いについて]
-
[解決済み】ディレクトリ内のファイル数を数える PHP
-
[解決済み] $wpdb->update または $wpdb->insert を実行すると、引用符の前にスラッシュが追加される
-
[解決済み】子テーマのCSSが親テーマをオーバーライドしない
-
[解決済み】Laravel 5.2 Storage::makeDirectory($dir) でディレクトリが作成されない。
-
MacでPHPを実行した際に、メモリサイズが134217728バイトも消費される問題の解決方法について
-
[解決済み】phpのシンタックスエラー、予期しないT_IFエラーを修正する方法は?[クローズド]。