PHP 日期显示“1970-01-01”转换后

发布于 2024-12-28 10:28:55 字数 273 浏览 0 评论 0原文

我有一个日期格式为 dd/mm/yyyy 的表单。为了搜索数据库,我将日期格式转换为 yyyy-mm-dd 。但是当我echo它时,它显示1970-01-01。 PHP 代码如下:

$date1 = $_REQUEST['date'];     
echo date('Y-m-d', strtotime($date1));

为什么会发生这种情况?如何将其格式化为yyyy-mm-dd

I have a form in which date format is dd/mm/yyyy . For searching database , I hanverted the date format to yyyy-mm-dd . But when I echo it, it showing 1970-01-01 . The PHP code is below:

$date1 = $_REQUEST['date'];     
echo date('Y-m-d', strtotime($date1));

Why is it happening? How can I format it to yyyy-mm-dd?

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

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

发布评论

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

评论(8

最丧也最甜 2025-01-04 10:28:55

/ 替换为 -

$date1 = strtr($_REQUEST['date'], '/', '-');
echo date('Y-m-d', strtotime($date1));

Replace / with -:

$date1 = strtr($_REQUEST['date'], '/', '-');
echo date('Y-m-d', strtotime($date1));
通知家属抬走 2025-01-04 10:28:55

1970 年 1 月 1 日是所谓的 Unix 纪元。这是他们开始计算 Unix 时间 的日期。如果您将此日期作为返回值,通常意味着日期到 Unix 时间戳的转换返回了(接近)零的结果。所以日期转换不成功。很可能是因为它收到了错误的输入。

换句话说,您的 strtotime($date1) 返回 0,这意味着 $date1 以 strtotime 函数不受支持的格式传递。

January 1, 1970 is the so called Unix epoch. It's the date where they started counting the Unix time. If you get this date as a return value, it usually means that the conversion of your date to the Unix timestamp returned a (near-) zero result. So the date conversion doesn't succeed. Most likely because it receives a wrong input.

In other words, your strtotime($date1) returns 0, meaning that $date1 is passed in an unsupported format for the strtotime function.

南城旧梦 2025-01-04 10:28:55
$inputDate = '07/05/-0001';
$dateStrVal = strtotime($inputDate);
if(empty($dateStrVal))
{
  echo 'Given date is wrong'; 
}
else{
 echo 'Date is correct';
}

O/P:给定的日期是错误的

$inputDate = '07/05/-0001';
$dateStrVal = strtotime($inputDate);
if(empty($dateStrVal))
{
  echo 'Given date is wrong'; 
}
else{
 echo 'Date is correct';
}

O/P : Given date is wrong

蓝眼泪 2025-01-04 10:28:55
$date1 = $_REQUEST['date'];

if($date1) {
    $date1 = date( 'Y-m-d', strtotime($date1));
} else {
    $date1 = '';
}

$date 中存在有效的 date() 时,这将正确显示,否则不显示任何内容。
为我解决了这个问题。

$date1 = $_REQUEST['date'];

if($date1) {
    $date1 = date( 'Y-m-d', strtotime($date1));
} else {
    $date1 = '';
}

This will display properly when there is a valid date() in $date and display nothing if not.
Solved the issue for me.

梦里兽 2025-01-04 10:28:55

另一种解决方法:

将日期选择器 dd/mm/yyyy 转换为 yyyy-mm-dd

$startDate = trim($_POST['startDate']);
$startDateArray = explode('/',$startDate);
$mysqlStartDate = $startDateArray[2]."-".$startDateArray[1]."-".$startDateArray[0];
$startDate = $mysqlStartDate;

Another workaround:

Convert datepicker dd/mm/yyyy to yyyy-mm-dd

$startDate = trim($_POST['startDate']);
$startDateArray = explode('/',$startDate);
$mysqlStartDate = $startDateArray[2]."-".$startDateArray[1]."-".$startDateArray[0];
$startDate = $mysqlStartDate;
安静 2025-01-04 10:28:55

问题是,当您的数据设置为 000-00-00 或为空时,您必须仔细检查并提供正确的信息,此问题就会消失。我希望这有帮助。

The issue is when your data is set to 000-00-00 or empty you must double-check and give the correct information and this issue will go away. I hope this helps.

满意归宿 2025-01-04 10:28:55

对于 php 5.3+ 使用以下代码:

$date = new DateTime('1900-02-15');
echo $date->format('Y-m-d');

对于 php 5.2 使用以下代码:

$date = new DateTime('1900-02-15');
echo $date->format('Y-m-d');

Use below code for php 5.3+:

$date = new DateTime('1900-02-15');
echo $date->format('Y-m-d');

Use below code for php 5.2:

$date = new DateTime('1900-02-15');
echo $date->format('Y-m-d');
鹿港小镇 2025-01-04 10:28:55

最后我找到了一行代码来解决这个问题

date('d/m/Y', strtotime(str_replace('.', '-', $row['DMT_DATE_DOCUMENT'])));

finally i have found a one line code to solve this problem

date('d/m/Y', strtotime(str_replace('.', '-', $row['DMT_DATE_DOCUMENT'])));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文