11

Webサイトのさまざまな部分でソートおよびフィルタリングするために、エントリの日付に相当するUNIXエポックタイムスタンプに依存するmysqlテーブルがあります。フォームフィールドにmm/dd/yyyy形式で日付を入力する日付ピッカーを実装しようとしています。その日付をUNIXエポック形式に変換して、そのエントリを行フィールドに追加するのに苦労してきました。私が行ったすべての試みの結果、当日のエポックタイムスタンプが生成されました。誰かが私がその日付形式を取り、それと同等のエポックタイムスタンプに変換する方法を知っていますか?

前もって感謝します。

追加情報:

私はmktimeを試してきましたが、得られるのは今日の時代だけです。申し訳ありませんが、説明をわかりやすくするために、以前にいくつかのコードを追加する必要がありました。

フォームIDは「date」です。データベースフィールドは「epoch」です。

日付を投稿するときに(失敗して)試していることは次のとおりです。

$epochhold = ($_POST['date']);
$epoch = mktime(0,0,0,$epochhold);

以前の投稿から、これはmktimeが期待するmm、dd、yyyyではなくmm / dd / yyyyとして値を送信することを理解していますが、投稿はそれを行う方法についての解決策を提供していませんでした。str_replaceを試して「/」を「」に変更したところ、同じ結果が得られました。入力した日付に関係なく、今日のエポック日付が取得されました。

これがそのコード例です-これもうまくいきませんでしたが、私が試したことを説明するために追加しました

$epochhold = ($_POST['date']);
$epochold2 = str_replace('/', ', ', $epochhold)
$epoch = mktime(0,0,0,$epochhold2);

以前の返信にも感謝します。迅速な返信が見過ごされたくありませんでした。

みんな、ありがとう!

返信してくれたすべての人に感謝します-strtotimeは最初のテストで最もうまく機能しているようで、この形式はサイト全体で一貫しているため、進むべき道かもしれません。しかし、すべての提案は、他のいくつかのことをうまく助けてくれたので、もう一度ありがとう!

4

5 に答える 5

12

常にその形式になることがわかっている場合、strtotimeはそれをUNIXタイムスタンプに直接変換します。

strtotime($_POST['app_date']);

HTH!

于 2008-12-11T16:16:12.900 に答える
2

mktime()関数を確認する必要があります。それを正規表現またはstrtotime()のいずれかと組み合わせると、それが得られます。

于 2008-12-11T15:48:18.947 に答える
0

dd、mm、yyyy を別の変数として mktime に送信する必要があります。$epochold2 の値は、mktime には無効な 1 つの文字列として使用されます。

最善の策は、前に述べたように strtotime を使用するか、mktime を使用して Ant P のアドバイスに従うことです。

于 2008-12-11T16:38:45.473 に答える
0
if ( ! preg_match('#\d{2}/\d{2}/\d{4}#', $_POST['date']) ) {
    // complain about invalid input
}

list($m, $d, $y) = explode('/', $_POST['date']);
$timestamp = mktime(0, 0, 0, $m, $d, $y);
于 2008-12-11T16:21:08.880 に答える
0

strtotime()はほぼすべての日付形式を解析し、Unix タイムスタンプを返します。日付/時刻の文字列を渡すだけです。

$unix_time = strtotime($_POST['date']);
if($unix_time < 0) {
    //error case
}
else {
    //value OK!
}

上記のように、入力の検証に使用することもできます。ユーザーが 2008 年 2 月 31 日のような日付を入力すると、-1 が返されます。

于 2008-12-11T17:01:25.787 に答える