Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP日期格式转换_Php_Date - Fatal编程技术网

PHP日期格式转换

PHP日期格式转换,php,date,Php,Date,以下是我所拥有的: $dateFormat = 'M d, Y'; $dateString = 'January 23, 2010'; 我需要的是$dateString的时间戳,以便执行以下操作: $newFormattedDate = date('Y-m-d', $timestamp); 我试着使用strotime函数,但它试图找出格式本身,并不总是有效。在我的情况下,我知道日期字符串和日期格式 如何将$timestamp设置为与函数一起使用的适当值 编辑:我需要它在Linux和Windo

以下是我所拥有的:

$dateFormat = 'M d, Y';
$dateString = 'January 23, 2010';
我需要的是
$dateString
的时间戳,以便执行以下操作:

$newFormattedDate = date('Y-m-d', $timestamp);
我试着使用
strotime
函数,但它试图找出格式本身,并不总是有效。在我的情况下,我知道日期字符串和日期格式

如何将
$timestamp
设置为与函数一起使用的适当值

编辑:我需要它在Linux和Windows环境下都能工作

编辑:解决方案必须支持PHP版本4或更高版本

编辑:MySQL有一个名为的函数,它接受日期字符串和日期格式,并返回
Y-m-d
格式的日期字符串。php的任何等效函数也适用于我。

使用,并且:

请注意,
strtime
未在Windows平台上实现

请注意,
mktime
的参数有些不寻常-
strtime
返回一年中的一天(0-365,包括0-365),而不是一个月中的一天和一个月,因此我们将month参数设置为
mktime
为1,并将1添加到一年中的一天。另外,
strtime
返回的年份值是从1900年开始的年份,因此我们需要在将年份传递到
mktime
之前将1900添加到年份中


此外,在将
$ftime
传递到
mktime
之前,您可能需要检查
$ftime
是否为
FALSE
strtime
返回
FALSE
表示输入
$dateString
不是有效的日期格式,根据
$dateFormat
从PHP5.3开始,您可以使用DateTime API

$dt = date_create_from_format('M d, Y', 'January 23, 2010');
echo date_timestamp_get($dt);
或者使用OOP表示法

$dt = DateTime::createFromFormat('M d, Y', 'January 23, 2010');
echo $dt->getTimestamp();
请注意,虽然PHP<5.3中提供了
DateTime
,但上面使用的方法并不适用,虽然您可以使用
->format('U')
模拟
->getTimestamp()
,但
createFromFormat()

另一种选择是使用Zend框架:

$date = new Zend_Date('Feb 31, 2007', 'MM.dd.yyyy');
echo $date->get(Zend_Date::TIMESTAMP);

考虑到我对这个问题的理解以及PHP中的可用内容,您需要在某个地方或其他地方放松您的期望

一个“简单”的解决方案(已经被打折)是强制使用PHP5.3和其中可用的工具

一个不那么简单的解决方案是将这些添加内容移植到PHPLAND(与PHP4兼容,祝你好运)

另一种探索的方式是考虑“代码> StotoTime/Cuth>对你不起作用并且在这些限制下工作的场合。

格式字符串的变化有多大?如果函数/方法受到相当大的限制,可能会提出一种将格式字符串映射到函数/方法(以进行日期解析)的解决方案

$dateFormat = 'M d, Y'
$timestamp = strtotime($dateString);
echo date($dateFormat, $timestamp); 

如果我没有误解您的问题,您可以尝试上面的代码。

谢谢Dominic,但在strtime的php手册中,它说“此函数未在Windows平台上实现。”。这对我来说是个杀手。还有
strotime
可以帮助我。嗨,亨纳斯拉夫,正如我在问题中解释的,strotime在这种情况下不起作用。啊-好的。我将把这个答案留在这里,以防对其他人有用。将来,如果您有平台限制,可能需要在问题中说明它们:-)+1用于提及未在Windows平台上实现的
strtime
。您好Gordon,谢谢您的回答,但我需要它在PHP 4或更高版本中工作。我也在问题中增加了这一要求。
$dateFormat = 'M d, Y'
$timestamp = strtotime($dateString);
echo date($dateFormat, $timestamp);