datetime default curdate怎么用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了datetime default curdate怎么用相关的知识,希望对你有一定的参考价值。

参考技术A 三种函数有以下用法。
curdate:1.curdate()2.current_date()3.current_date;default:1、在switch语句的时候使用default2、定义接口的时候用default来修饰方法default是在java8中引入的关键字,也可称为Virtual ,他的出现是为了解决实现接口的缺陷问题(就是如果想修改接口时,所有实现了该接口的类都需要去修改)datetime:1、DateTime 数字型System.DateTimecurrentTime=newSystem.DateTime();1.1 取当前年月日时分秒currentTime=System.DateTime.Now;1.2 取当前年int 年=currentTime.Year;1.3 取当前月int 月=currentTime.Month;1.4 取当前日int 日=currentTime.Day;1.5 取当前时int 时=currentTime.Hour;1.6 取当前分int 分=currentTime.Minut。这三种函数都是c语言里面需要用到的函数,并且这三种函数的用法都有很多相似之处,在计算时间,事件,数字的时候都可以用这三个函数进行计算。

PHP \DateTime vs date() DST shift bug?

【中文标题】PHP \\DateTime vs date() DST shift bug?【英文标题】:PHP \DateTime vs date() DST shift bug?PHP \DateTime vs date() DST shift bug? 【发布时间】:2017-05-28 03:00:18 【问题描述】:

您好,我对 PHP 的 DateTime 有疑问。

考虑以下脚本:

  date_default_timezone_set("Europe/Paris");
  echo $tz = date_default_timezone_get();
  echo "\n";

  $dt = new \DateTime("2017-10-29 00:00:00");
  $i = (int)$dt->format('U');
  $i_max = $i + 3600*5;
  for(; $i < $i_max ; $i+=3600)
        $dt = new \DateTime();
        $dt->setTimezone(new \DateTimeZone($tz));
        $dt->setTimestamp($i);

        echo $i."\n";
        echo $dt->format('c T e')."\n";
        echo date('c T e', $i)."\n";
        echo "\n";
   

它在 5 个“小时”时间戳之间循环,直到 10 月法国夏令时。 然后它会显示 ISO8601 中的日期及其时区标识符和缩写。

结果如下:

Europe/Paris

1509228000
2017-10-29T00:00:00+02:00 CEST Europe/Paris
2017-10-29T00:00:00+02:00 CEST Europe/Paris

1509231600
2017-10-29T01:00:00+02:00 CEST Europe/Paris
2017-10-29T01:00:00+02:00 CEST Europe/Paris

1509235200
2017-10-29T02:00:00+01:00 CET Europe/Paris
2017-10-29T02:00:00+02:00 CEST Europe/Paris

1509238800
2017-10-29T02:00:00+01:00 CET Europe/Paris
2017-10-29T02:00:00+01:00 CET Europe/Paris

1509242400
2017-10-29T03:00:00+01:00 CET Europe/Paris
2017-10-29T03:00:00+01:00 CET Europe/Paris

查看第 3 次迭代,DateTime->format() 和 date() 之间的结果不同。

日期时间显示:

2017-10-29T02:00:00+01:00 CET 欧洲/巴黎

但它应该显示与 date() 相同的内容:

2017-10-29T02:00:00+02:00 CEST 欧洲/巴黎

我的错在哪里??

--编辑--

嗨,这是另一个直接指向“错误”的脚本:

date_default_timezone_set("Europe/Paris");

$dt = new \DateTime();
$dt->setTimestamp(1509235200);
echo $dt->format('c T e')."\n";

echo date('c T e', 1509235200)."\n";

显示:

2017-10-29T02:00:00+01:00 CET Europe/Paris
2017-10-29T02:00:00+02:00 CEST Europe/Paris

并且应该显示:

2017-10-29T02:00:00+02:00 CEST Europe/Paris
2017-10-29T02:00:00+02:00 CEST Europe/Paris

【问题讨论】:

为什么不使用 DateInterval,并使用 DateTime 对象和句点,而不是使用 UTC 且不支持 DTS 的 unix 时间戳 我正在尝试建模一种在 mysql 中存储 datetime+dst 数据的方法,但我发现了这个错误。该循环仅用于示例目的。我不明白为什么 DateTime 和 date() 的行为不同。 在这段代码之后'$i = $dt->format('U');'执行时,$i 是一个字符串,然后你把它当作一个数字来使用,所以你会得到意想不到的结果。 $tz 设置在哪里? vascowhite:我更正了脚本的开头并为格式('U')添加了一个(int)强制转换,不幸的是没有任何改变。 【参考方案1】:

我认为这种不一致与 PHP 错误 74274 有关。问题是 DateTime 在这种情况下工作错误。如果您将运行该代码,那就很明显了:

date_default_timezone_set("Europe/Paris");
$timestamp = 1509235200;
$dt = new \DateTime();
$dt->setTimestamp($timestamp);
echo $timestamp."\n";
echo $dt->getTimestamp()."\n";

它会打印出来

1509235200
1509238800

【讨论】:

以上是关于datetime default curdate怎么用的主要内容,如果未能解决你的问题,请参考以下文章

模型中的 Django default=datetime.now() 在 uwsgi 重置后总是保存相同的日期时间

MySQL的计算时间差

mysql datetime NOT NULL DEFAULT '0000-00-00 00:00:00' 无效

建议合适的mysql日期函数

mysql添加DATETIME类型字段导致Invalid default value错误的问题

如何向mysql中插入date 字段