Dev*_*and 106 php validation time date
我有一个表单,将两个日期(开始和结束)传递给PHP脚本,将脚本添加到数据库中.我在验证这个问题时遇到了问题.我一直收到以下错误
遇到一个非常好的数值
这是我使用以下内容时
date("d",$_GET['start_date']);
Run Code Online (Sandbox Code Playgroud)
但是当我使用许多站点建议的strtotime()函数时,我得到的unix时间戳日期为1/1/1970.我有什么想法可以得到正确的日期吗?
小智 208
因为您将一个字符串作为第二个参数传递给date函数,该函数应该是一个整数.
string date(string $ format [,int $ timestamp = time()])
尝试使用strtotime将任何英文文本日期时间描述解析为Unix时间戳(整数):
date("d", strtotime($_GET['start_date']));
Run Code Online (Sandbox Code Playgroud)
当您对使用字母与数字(字母数字)组合的变量执行计算时会发生此错误,例如 24kb、886ab ...
我在以下函数中遇到错误
function get_config_bytes($val) {
$val = trim($val);
$last = strtolower($val[strlen($val)-1]);
switch($last) {
case 'g':
$val *= 1024;
case 'm':
$val *= 1024;
case 'k':
$val *= 1024;
}
return $this->fix_integer_overflow($val);
}
Run Code Online (Sandbox Code Playgroud)
该应用程序上传图像但它不起作用,它显示以下警告:
解决方案:该intval()函数使用字母数字数据提取变量的整数值,并创建一个具有相同值但使用intval()函数转换为整数的新变量。这是代码:
function get_config_bytes($val) {
$val = trim($val);
$last = strtolower($val[strlen($val)-1]);
$intval = intval(trim($val));
switch($last) {
case 'g':
$intval *= 1024;
case 'm':
$intval *= 1024;
case 'k':
$intval *= 1024;
}
return $this->fix_integer_overflow($intval);
}
Run Code Online (Sandbox Code Playgroud)
函数 fix_integer_overflow
// Fix for overflowing signed 32 bit integers,
// works for sizes up to 2^32-1 bytes (4 GiB - 1):
protected function fix_integer_overflow($size) {
if ($size < 0) {
$size += 2.0 * (PHP_INT_MAX + 1);
}
return $size;
}
Run Code Online (Sandbox Code Playgroud)
您只需使用strtotime()功能即可解决此问题.
date("d",strtotime($_GET['start_date']));
Run Code Online (Sandbox Code Playgroud)
小智 5
我遇到了同样的情况(在我的情况下,在Drupal视图中的自定义PHP字段中有一个日期值),对我有用的是使用intval而不是strtotime将值转换为整数 - 因为它基本上是一个时间戳,但是以字符串而不是整数的形式.显然每个人都不会这样,但值得一试.
这对我帮助很大:
$new_date = date_format(date_create($old_date), 'Y-m-d');
Run Code Online (Sandbox Code Playgroud)
在这里,date_create()为您提供给定日期的日期对象date_format()并将其设置为给定格式。
例如,
<?php
$date = date_create("13-02-2013"); // DateTime Object ( [date] => 2013-02-13 00:00:00.000000 [timezone_type] => 3 [timezone] => America/New_York )
echo date_format($date,"Y-m-d"); // 2013-02-13
?>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
290912 次 |
| 最近记录: |