2017-03-17 9 views
0

私はUNIXのタイムスタンプ、php、およびmysqlの問題に直面しています。もし誰かが私に間違ってやっていると私に説明できたらうれしいです。私が得ている数字。PHP UNIXタイムスタンプが同じ値に反復しない

jquery datepickerを使用して年月日形式の日付をPHPに渡すと、タイムスタンプ内の時間と分が既定で23:00:00に設定されていますが、この情報を要求。だから私の質問は、このファントム23:00:00がどこから現れているのでしょうか? - > PHP - 時間は午前23時00分00秒に設定されている>のmysql = TIMESTAMP日付ピッカー:

ワークフロー:日付ピッカーを使用して

datepickerを使用しないで: php-> mysql = TIMESTAMPで正しい時と分を指定してください。

読んでいただきありがとうございます。

EDIT:PHPコードの要求通り:

PHP code: 

$setdatealpha = $_POST['datepickeralpha']; 
$setdatealpha = strtotime($setdatealpha); 

// With this, I am inserting into MySQL like so: 


$sql = "INSERT INTO TABLE (DATE_FIELD) VALUES (?)"; 
$stmt = $mysqli->prepare($sql); 
$stmt->bind_param('s',$setdatealpha); 
$stmt->execute(); 

私は戻って入力した情報を読み、日付(「YM-D」、タイムスタンプ)を経由して、日付時刻の形式に変換し、日付エントリが正しいとタイムエントリは23:00:00の値を持ちます。

strtotime(date)を使用して標準の変換を行うと、これは発生しません。

+0

あなたがここにそれを – daheda

答えて

2

現在入手可能な情報に基づいて、各タイムスタンプがUTCであることを確認することをお勧めします。私は常にタイムゾーンの問題にぶつかります。私は、このstackoverflowのスレッドを発見したjQueryの日付ピッカーの場合$current_timestamp = strtotime($date." UTC");
::のようなPHPの場合

は、 How to obtain utc time in jQuery datetimepicker

+1

ニースの先端を扱うPHPコードを貼り付けることができます。ただし、慎重に使用しないと、ウェブサイトのユーザーが入力する状況につながる可能性があります。 3月30日には3月29日に戻ってくる。毎回同じタイムゾーンを使用する必要があります。 –

1

おそらく、タイムゾーン。

まず、コンテキストを明確にしましょう。 strtotime()はUnixタイムスタンプを生成します。これは明らかにDATE_FIELDをフィードします。それが機能する場合は、列がINTEGERであることを意味します。この場合、日付を表示するために何かをやっていて、その部分を共有していません。つまり、DATE_FIELDが日付であることを意味するものさえ知らないので、MySQLはここでは無実です。

strtotime()に生の日付を入力することができますが、時間も生成する必要があります。タイムゾーンを知らない限り、それはできません。さらに、Unixのタイムスタンプを持つ整数変数を持ち、それを適切な日付として表示したい場合は、タイムゾーンも知る必要があります。

var_dump(date_default_timezone_get()); 

だからあなたはおそらく、例えばとの公知のものを設定することをお勧めします:どちらの場合も

、あなたがそれを提供しない場合、PHPはデフォルト値を使用しますdate_default_timezone_set()。しかし、あなたのユーザはあなたとは異なるタイムゾーンを持つかもしれません。生の日付(時間なし)をユーザーに促すので、時間は実際には問題に関係しない可能性があります。 DATE_FIELDDATEの種類を確認し

  1. :このような場合は、あなたがしたいことがあります。
  2. strtotime()などを避けてください。代わりにcheckdate()を使用することができます。
関連する問題