問題タブ [strtotime]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - strtotime で月の最初の平日を取得する
を使用して特定の月の最初の水曜日を把握しようとしていstrtotime
ますが、最初の水曜日がたまたま 1 日に当たると、「最初の水曜日」引数は失敗します。
この問題のより一般的な図については、次のコードと結果を参照してください。
結果:
何か気づきましたか?週の 1 日は月の 1 日と一致するべきではありませんか? しかし、そうではなく、その日の 2 番目のインスタンスである 8 日が常に返されます。
誰でもこれについて説明がありますか?
date - PHP strtotimeは間違った日付を変換します
日付を秒単位で時間に変換してから元に戻すと、結果が間違っているのはなぜですか?
php - うるう年のないPHP strtotime
このスレッドに関して、私は部分的な解決策を開発しました:
この関数は、うるう年をチェックせずに、指定された文字列の秒数を取得することになっています。
1970 年のうるう年の数 [(year-1986)/4] を計算し、うるう年と通常の年の秒数の差を掛けます (最終的には、1970 年の秒数です)。一日)。
最後に、計算された時間から余分な閏年秒をすべて削除します。入力/出力の例を次に示します。
おそらく、出力で除算を行う理由を尋ねるでしょう。それをテストすることです。31536000 は 1 年の秒数なので、19.99... は 20、0.99... は 1 になるはずです。確かに、すべてを四捨五入して「正しい」答えを得ることができましたが、不正確さ。
Edit1:明らかではないので、私の問題は不確実性にあります。20 年間 PHP に頼まなかっただけで、19.99 が得られます... ですよね?
Edit2:すべては 1968 年頃の部分に集約されるようです。
php - タイムスタンプをstrtotimeする方法、またはSQLの日付を処理する最善の方法は?
私のPHPアプリでは、PHPのdate()
コマンドでフォーマットすると、MySQLデータベースから日付を取得します。私はそれを片付けて、検索ではなく、すべてをビューに移動したいと思います。しかし、私はいくつかの問題に遭遇しました。
データベースから日付を取得するときは、データベースで実行strtotime()
した後、それをアプリの残りの部分に渡します。これにより、date()
関数で操作できるものが得られます。これは良い考えですか?または私はより良いそして明白な何かを逃していますか?私が扱っている日付は、ほぼすべてDATE
タイプであり、ではありませんDATETIME
。
だから、私は日付を取得し、date()
それをWebページに表示するために使用できます。しかし、時々、データベースの他の場所に挿入するためだけにデータベースから何かを取得し、バックエンドを探し回ってdate()
、ビューに分離するという目的を損なうような場所を見つける必要があります。私の検索関数は便利に戻りstrtotime($date_from_db)
、次に他のテーブルに新しいエントリを作成します...そしてすべての新しいエントリは検証および準備関数を通過する必要があります。そしてここに問題があります。strtotime()
日付が0000-00-00以外かどうかを確認して、日付を検証して準備します。しかしstrtotime()
、タイムスタンプで実行することはできません。1969年12月31日を与えられた場合、私が実行したテストで。だから私の質問:
strtotime()
どういうわけかタイムスタンプで実行することは可能ですか?- そうでない場合、変数がタイムスタンプであるかどうかを知る簡単な方法はありますか?だから私は
date()
対処するのではなく、単にそれを実行することができstrtotime()
ますか?1969年12月31日になるかどうかを確認することは別として、一貫性のない失敗を信頼できるかどうかわからないためです。それがとにかく有効なことでない限り? - そして、私はこれを完全に間違っていますか?
php - Date と StrToTime の使用
最終的にWindowsサーバーに着陸し、エラーを生成することを決定するまで、問題なく次のコードを使用してきました。
*(e_date は次のように保存されます: "1293559200"、e_time は次のように保存されます: "18:00")*
エラーは次のとおりです。
私の理解では、これは日付関数内で strtotimeを使用しているためです。だから私が疑問に思っているのは、これを解決または書き換えるエレガントな方法は何ですか?
strtotime 全体を新しい変数、つまり $newdate に入力してから、その形式で日付に戻す必要がありますか?
ありがとうございました!
php - PHP date() を使用して 7 日前から前の日曜日を返すにはどうすればよいですか?
これが私がこれまでに持っているものです:
$start を出力すると、次のように返されます: 1969-12-31 06:00:00
私は何を間違っていますか?
php - strtotime & date の検証 (2011 年 1 月 20 日と 2011 年 1 月 1 日)
これらの 2 つの形式のみを許可する必要があります。
PHP:
検証:
IF = 2011 年 1 月 20 日
- 最初の部分には 01 ~ 12 の数字のみを含める必要があります
- 2 番目の部分には 01 ~ 31 の数字のみを含める必要があります
- 3 番目の部分は 4 つの数字で構成する必要があります
IF = 2011 年 1 月
- 最初の部分には 01 ~ 12 の数字のみを含める必要があります
- 2 番目の部分は 4 つの数字で構成する必要があります
php - strtotime は int をタイムスタンプに変換します
私が取り組んでいたプログラムでは、データをループしており、特定のデータが日付であるかどうかを知る必要がありました。
簡単にするために、 という関数を作成しましたis_date
。これは次のようになります。
これは機能しているように見えましたが、何らかの理由で、TRUE
int (日付ではない) に対して返されました。
例えば:
is_date(165000)
がTRUE を返すのはなぜですか? strtotime
165000 をタイムスタンプに変換するにはどうすればよいですか?
修正として、is_date
関数を次のように変更しました。
php - 順序値を使用する場合のphpstrtotime関数の問題
strtotimeで順序値を使用すると、予期しない結果が生じることがあります。たとえば、なぜ
結果は「2月15日」になります(これは実際には2011年の第3火曜日ですか?
php - Php strtotime「丸め」月末
strtotime が月末を翌月に丸めることがある理由は何ですか?
結果:
Date as String: 2011-1-31 00:00:00
Date as UnixTime: 1296450000
UnixTime back to String: 2011-01-31 00:00:00
String back to UnixTime: 1296450000
Date as String: 2011-2- 31 00:00:00
UnixTime としての日付: 1299128400
UnixTime を文字列に戻す
: 2011-03-03 00:00:00 UnixTime
に戻す文字列: 1299128400 文字列としての日付: 2011-3-31 00:00:00 UnixTime
としての日付: 1301544000
UnixTime を String に戻す: 2011-03-31 00:00:00
String を UnixTime に戻す: 1301544000
Date as String: 2011-4-31 00:00:00
Date as UnixTime: 1304222400
UnixTime を String に戻す: 2011-05- 01 00:00:00
UnixTime に戻る
文字列: 1304222400 文字列としての日付: 2011-5-31 00:00:00
UnixTime としての日付: 1306814400
UnixTime を文字列に戻す
: 2011-05-31 00:00:00 UnixTime に戻す
文字列: 1306814400 文字列としての日付: 2011-6-31 00:00:00 UnixTime
としての日付: 1309492800
UnixTime を文字列に戻す: 2011-07-01 00:00:00
文字列を UnixTime に戻す: 1309492800
Date as String: 2011-7-31 00:00:00
Date as UnixTime: 1312084800
UnixTime を String に戻す: 2011-07-31 00:00:00
UnixTime に戻す
文字列: 1312084800 文字列としての日付: 2011-8-31 00:00:00 UnixTime
としての日付: 1314763200
UnixTime を文字列に戻す
: 2011-08-31 00:00:00 UnixTime
に戻す文字列: 2011-9-31 00:00:00 UnixTime
としての日付: 1317441600
UnixTime を String に戻す: 2011-10-01 00:00:00
String を UnixTime に戻す: 1317441600
Date as String: 2011-10-31 00:00:00
Date as UnixTime: 1320033600
UnixTime を String に戻す: 2011-10-31 00:00:00
UnixTime に戻る文字列: 1320033600
文字列としての日付: 2011-11-31 00:00:00
UnixTime としての日付: 1322715600
UnixTime から文字列に戻る: 2011-12-01 00:00:00 UnixTime に戻る文字列
: 1322715600