【PHP】timestamp形式の日付時刻をフォーマットして表示したい
やりたいこと
現在作成中のアプリで記事投稿日の表示フォーマットを変更したい
投稿一覧画面のソース抜粋
<!-- 投稿一覧画面 -->
<div class="container">
<div class="contents">
<?php foreach($posts_arr as $key => $value) :?>
<div class="card" style="margin-top: 16px;">
<div class="card-header" style="padding: 0; font-family: serif;">
<div class="text-center" style="margin-top: 0.6rem; line-height: 0rem;">
<a><i class="fas fa-fish"></i> <?php echo $posts_arr[$key]['fish_kind']; ?></a>
</div>
<div class="text-right" style="margin-right: 0.6rem;">
<a style="font-size: 0.6rem;">投稿者 <span style="font-size: 0.8rem; font-weight: bold;"><?php echo $posts_arr[$key]['nickname']; ?></span>さん</span></a>
</div>
</div>
<div class="card-main" style="object-fit: contain; margin-bottom: 16px;">
<img src="./img/<?php echo $posts_arr[$key]['file_name']; ?>" class="card-img">
</div>
<div class="card-body">
<p class="card-text" style="margin-bottom: 0.4rem;"><?php echo mb_strimwidth($posts_arr[$key]['angler_comment'], 0, 200, '…', 'UTF-8'); ?></p>
<div class="text-right">
<a style="font-size: small;">投稿日: <?php echo $posts_arr[$key]['created_at']; ?></a>
</div>
<div class="text-right">
<a href="./posts/show.php?p_id=<?php echo $posts_arr[$key]['id']; ?>" class="card-link" style="font-size: small;">詳細を見る</a>
</div>
</div>
</div>
<?php endforeach; ?>
</div>
</div>
改修内容
<!-- 投稿一覧画面 -->
<div class="container">
<div class="contents">
<?php foreach($posts_arr as $key => $value) :?>
<div class="card" style="margin-top: 16px;">
<div class="card-header" style="padding: 0; font-family: serif;">
<div class="text-center" style="margin-top: 0.6rem; line-height: 0rem;">
<a><i class="fas fa-fish"></i> <?php echo $posts_arr[$key]['fish_kind']; ?></a>
</div>
<div class="text-right" style="margin-right: 0.6rem;">
<a style="font-size: 0.6rem;">投稿者 <span style="font-size: 0.8rem; font-weight: bold;"><?php echo $posts_arr[$key]['nickname']; ?></span>さん</span></a>
</div>
</div>
<div class="card-main" style="object-fit: contain; margin-bottom: 16px;">
<img src="./img/<?php echo $posts_arr[$key]['file_name']; ?>" class="card-img">
</div>
<div class="card-body">
<p class="card-text" style="margin-bottom: 0.4rem;"><?php echo mb_strimwidth($posts_arr[$key]['angler_comment'], 0, 200, '…', 'UTF-8'); ?></p>
<div class="text-right">
<a style="font-size: small;">投稿日: <?php echo $posts_arr[$key]['created_at']; ?></a>
</div>
<div class="text-right">
<a href="./posts/show.php?p_id=<?php echo $posts_arr[$key]['id']; ?>" class="card-link" style="font-size: small;">詳細を見る</a>
</div>
</div>
</div>
<?php endforeach; ?>
</div>
</div>
投稿日: 2020-11-05 21:42:08
表示の秒数部分を無くして
投稿日: 2020-11-05 21:42
にしたい
改修方法
// 日付表示部分
<div class="text-right">
<?php $date = new DateTime($posts_arr[$key]['created_at']);?>
<a style="font-size: small;">投稿日: <?php echo $date->format('Y-m-d H:i'); ?></a>
</div>
// 日付表示部分
<div class="text-right">
<?php $date = new DateTime($posts_arr[$key]['created_at']);?>
<a style="font-size: small;">投稿日: <?php echo $date->format('Y-m-d H:i'); ?></a>
</div>
関数一つ通せばできるものかなと考えながら調べている内にdate_format()を発見
しかし、date_format()はそもそもオブジェクトありきの関数だったため
フォーマットする前にオブジェクトを生成してから実行する必要があると知った。
結論、echoの前にtimestamp形式のデータをオブジェクト生成してからフォーマットする流れでできた。
<?php echo date_format($date, 'Y-m-d H:i'); ?>
もちろんechoの部分はこれでもいけますがなるべくオブジェクト指向の記述で書きたいので
前者の方を採用しました。
や↑ったぜ
参考
Author And Source
この問題について(【PHP】timestamp形式の日付時刻をフォーマットして表示したい), 我々は、より多くの情報をここで見つけました https://qiita.com/code_gazer/items/24245d38ad4ce9aa1105著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .