当日期列为空时,PHP strtotime 返回 1970 年日期

发布于 2024-12-09 06:47:15 字数 303 浏览 2 评论 0原文

我想以 dd-mm-yyyy 格式显示 $row->depositdate。

如果数据库中的日期列为空,则显示的日期为:01-01-1970

echo "<td align=center>".date('d-m-Y', strtotime($row->depositdate))."</td>";

如果数据库中的日期为空,则不应显示任何内容,否则应显示 dd-mm-yyyy 格式的日期。

预先感

谢桑迪普

I want to display $row->depositdate in dd-mm-yyyy format.

If the date column in database is null the date displayed is : 01-01-1970

echo "<td align=center>".date('d-m-Y', strtotime($row->depositdate))."</td>";

If the date is null in database it should display nothing , otherwise the date in dd-mm-yyyy format should be displayed.

Thanks in advance

Sandeep

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

注定孤独终老 2024-12-16 06:47:15

NULL 被 strtotime 解释为 0,因为它想要传递一个整数时间戳。时间戳 0 表示 1-1-1970。

因此,您必须自己检查是否 $row->depositdate === NULL,如果是,则根本不要调用 strtotime。

NULL is interpreted as 0 by strtotime, since it want to be passed an integer timestamp. A timestamp of 0 means 1-1-1970.

So you'll have to check for yourself if $row->depositdate === NULL, and if so, don't call strtotime at all.

诗笺 2024-12-16 06:47:15

NULL 转换为 0 - 纪元 (1-1-1970)

改为执行此操作

echo "<td align=center>".($row->depositdate ? date('d-m-Y', strtotime($row->depositdate)) : '')."</td>";

NULL is converted to 0 - the epoch (1-1-1970)

Do this instead

echo "<td align=center>".($row->depositdate ? date('d-m-Y', strtotime($row->depositdate)) : '')."</td>";
秋凉 2024-12-16 06:47:15

您需要检查之前是否 $row->depositdata is_null 或检查如果 strtotime 无法识别 $row->depositdata 的值,则 strtotime 之后为 0。

  echo "<td align=center>";
  if (!is_null($row->depositdate))
  {
     $jUnixDate = strtotime($row->depositdate));
     if ($jUnixDate > 0)
     {
          echo date('d-m-Y', $jUnixDate);
     }
  }
  echo "</td>";

strtotime 期望得到一个包含英文日期格式的字符串,并尝试解析该格式转换为 Unix 时间戳(自 1970 年 1 月 1 日 00:00:00 以来的秒数UTC),相对于 now 中给出的时间戳,或者如果不提供 now 则相对于当前时间。

有关unixtime和Y2K38问题的更多信息:http://en.wikipedia.org/wiki/Year_2038_problem

You need to check if $row->depositdata is_null previously or check for 0 after strtotime if the value of $row->depositdata is unrecognizable for strtotime.

  echo "<td align=center>";
  if (!is_null($row->depositdate))
  {
     $jUnixDate = strtotime($row->depositdate));
     if ($jUnixDate > 0)
     {
          echo date('d-m-Y', $jUnixDate);
     }
  }
  echo "</td>";

strtotime expects to be given a string containing an English date format and will try to parse that format into a Unix timestamp (the number of seconds since January 1 1970 00:00:00 UTC), relative to the timestamp given in now, or the current time if now is not supplied.

more about unixtime and Y2K38 problem: http://en.wikipedia.org/wiki/Year_2038_problem

妖妓 2024-12-16 06:47:15
I am able to insert value into DB (SQL Server -- Microsoft) with PHP and value stored is: 2021-03-25 22:45:00

When I trying to fetch the value from DB:

 $db = trim($row_table['db_timestamp']);
 $timestamp = strtotime('m-d-y',$db);
 echo date("m-d-Y H:i:s", $timestamp);

output is : 01-01-1970 05:30:00
I am able to insert value into DB (SQL Server -- Microsoft) with PHP and value stored is: 2021-03-25 22:45:00

When I trying to fetch the value from DB:

 $db = trim($row_table['db_timestamp']);
 $timestamp = strtotime('m-d-y',$db);
 echo date("m-d-Y H:i:s", $timestamp);

output is : 01-01-1970 05:30:00
陪我终i 2024-12-16 06:47:15

哦!
我知道为什么会出现这种情况?
只是您没有包含“存款日期”
在您的 SELECT 查询中。
首先更改 SQL 查询以选择所有带通配符的符号
如图所示

$sql = "SELECT * FROM `yourtable`";

Oh!
I know why this happens?
Simply you have not included "depositdate"
in your SELECT query.
Firstly Change SQL query to select all with wild card sign
as shown here

$sql = "SELECT * FROM `yourtable`";
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文