質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

16932閲覧

日付が1970年1月1日になる

megune

総合スコア22

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/02/04 01:27

編集2019/02/04 02:25

Wordpressで記事を更新したときに日付を表示させているのですが、
1970年や6800年というわけのわからない日付になってしまいます。
おそらくここが原因だと思うのですが、どのように改善すればいいのでしょうか?

該当のソースコード

$date1 = date("Y年m月d日", strtotime(get_post_meta($post->ID, 'wpcf-date1', true))); $date2 = date("Y年m月d日", strtotime(get_post_meta($post->ID, 'wpcf-date2', true))); if($date2 != ''){ $detail .= '<div class="detail">日時:'.$date1.' ~ '.$date2.'</div>'; }else{ $detail .= '<div class="detail">日時:'.$date1.'</div>'; }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CHERRY

2019/02/04 03:24 編集

PHP的な内容は、回答がついている通りですが、カスタムフィールド wpcf-date1 と wpcf-date2 には、どのような値が入っていますか?
kei344

2019/02/04 05:58

回答が付いた質問の編集は慎重に行ってください。質問文のコードについて回答にて指摘があった場合は「追記」し、元のコードを編集する場合も「直したこと」がわかるようにしてください。
guest

回答3

0

ベストアンサー

1970年1月1日

date()の第2引数がNULLだからでは。

php

1echo date("Ymd",null); 2//19700101

あと、date()の第2引数は左記マニュアルの通り、タイムスタンプでないといけません。
strtotime()を通してタイムスタンプに変換しましょう。

php

1echo date("Y年m月d日","20190204"); 2//1970年08月22日 →これは単に1970.1.1から20190204秒経過した日付が出ている 3echo date("Y年m月d日",strtotime("20190204")); 4//2019年02月04日

※そもそもdate()の第二引数はnullはともかく他は数値型でないとエラーになります。

投稿2019/02/04 01:41

編集2019/02/04 01:48
m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

megune

2019/02/05 02:08

おっしゃる通り値がうまく取れてきていないようでした。 ありがとうございました。
m.ts10806

2019/02/05 02:11

実際にdateなどでフォーマットかける前に値を確認してみるといいですよ。 空ではないからと想定通りの情報が渡ってきている保証はないですし。もう少しifを通す条件を厳しくしてみてもいいかもしれません
m.ts10806

2019/02/06 05:20

取れた値で見るのも大事ですが「うまく取れてない」原因探る方が先ですね。 取れないことがあっていいのか、どうかの仕様も含めて
guest

0

PHPの日時データは1970/1/1 0:0:0からの経過秒数で表します
なので与えたデータが0だったということでしょう。
get_post_meta()の使い方がおかしいのでしょう

投稿2019/02/04 01:38

yambejp

総合スコア116724

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

PHP

1$date1_1 = get_post_meta($post->ID, 'wpcf-date1', true); 2$date1 = date("Y年m月d日", $date1_1); 3$date2_2 = get_post_meta($post->ID, 'wpcf-date2', true); 4$date2 = date("Y年m月d日", $date2_2);

じゃないでしょうか。

投稿2019/02/04 01:48

pontaq

総合スコア31

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/02/04 01:53

それだと質問者さんのコードを冗長に書き直しただけはないでしょうか。 get_post_meta()はPOSTされた文字列が返ってくる関数のようなのでdate()にかけたら結局同じです。
pontaq

2019/02/04 04:15

すみません、何かでカスタムフィールドにいきなりいれることができないとみたことがあったような気がして。 そもそもwpcf-date1,2がnullなんですね。失礼しました
m.ts10806

2019/02/04 04:31

nullかどうかは分からないですけどね(0かもしれないし・・) 私の回答はWordPressかどうかは関係のない内容なので、あわせ技は必要かもしれませんが、この質問内容からは分からないというところですね・・
kei344

2019/02/04 05:29

To: mts10806さん > get_post_meta()はPOSTされた文字列が返ってくる関数 ここは違います。postは記事のようなレコード単位のことで、postに関連付けられたmeta(文字列以外も可)を取得する物です。(なのでmetaに何を入れたか、および複数同じキーで登録しているかなどによって返り値も変わります) 【get_post_meta – WordPress私的マニュアル】 https://elearn.jp/wpman/function/get_post_meta.html
m.ts10806

2019/02/04 05:50

ありがとうございます。 ざっとマニュアル読んだだけで安直な理解をしてしまっていました。
pontaq

2019/02/04 05:56

おそらくですが、 1970年→Start 6800年→End(経過時間) をとってしまっているんじゃないかと思うので、wpcf-date1,2のとってくる値が間違っていそうですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問