PHP-将时间戳(2012-07-12 20:26:00)转换为两个独立的变量,以反映月份和日期值?
我想分别从时间戳“2012-07-12 17:50:00”中去掉日期和月份值 所以基本上我可以有两个变量,比如:PHP-将时间戳(2012-07-12 20:26:00)转换为两个独立的变量,以反映月份和日期值?,php,regex,string,strip,Php,Regex,String,Strip,我想分别从时间戳“2012-07-12 17:50:00”中去掉日期和月份值 所以基本上我可以有两个变量,比如: $month = 7 $day = 12 由于我不是很精通php,特别是正则表达式编码,我想我会发布这个问题来征求关于如何完成类似任务的建议 在此方面的任何帮助、见解或投入都将不胜感激。谢谢大家! 请注意:另外,我想把这两个变量转换成“7月12日”这样的输出。这可以很容易地编码,所以我没有把它作为问题的一部分,但是如果有一个简单的函数来处理这些信息,我也会非常感激 <?ph
$month = 7
$day = 12
由于我不是很精通php,特别是正则表达式编码,我想我会发布这个问题来征求关于如何完成类似任务的建议
在此方面的任何帮助、见解或投入都将不胜感激。谢谢大家!
请注意:另外,我想把这两个变量转换成“7月12日”这样的输出。这可以很容易地编码,所以我没有把它作为问题的一部分,但是如果有一个简单的函数来处理这些信息,我也会非常感激
<?php
list($month,$day) = explode(':',date('n:j',strtotime('2012-07-12 17:50:00')),2);
echo 'Month: '.$month.'<br />'."\n";//Month: 7
echo 'Day: '.$day.'<br />'."\n";//Day: 12
?>
而且
<?php
echo date('jS F',strtotime('2012-07-12 17:50:00'));//Outputs: 12th July
?>
而且
<?php
echo date('jS F',strtotime('2012-07-12 17:50:00'));//Outputs: 12th July
?>
假设时间戳是一个字符串,如果您正在寻找正则表达式解决方案,类似的方法应该可以工作
<?php
$string = '2012-07-12 17:50:00';
preg_match_all('/\d{4}-(\d{2})-(\d{2})/', $string, $matches);
$month =$matches[1][0];
$day = $matches[2][0];
?>
假设时间戳是一个字符串,如果您正在寻找正则表达式解决方案,类似的方法应该可以工作
<?php
$string = '2012-07-12 17:50:00';
preg_match_all('/\d{4}-(\d{2})-(\d{2})/', $string, $matches);
$month =$matches[1][0];
$day = $matches[2][0];
?>
正如评论中所说,DateTime将是一个不错的选择 首先,如果您的php配置尚未为您设置,请通过以下方式设置默认时区:
date_default_timezone_set('XXXX');
XXXX代表一个从
通过以下方式初始化日期:
$DateTime = new DateTime();
根据时间戳的位置,假设您将使用PHP创建时间戳:
$timestamp = $DateTime->getTimestamp();
现在格式化输出
echo $month = $DateTime->format( 'm' );
echo $day = $DateTime->format( 'd' );
或获得所需的输出:
echo $output = $DateTime->format( 'dS F' );
正如评论中所说,DateTime将是一个不错的选择 首先,如果您的php配置尚未为您设置,请通过以下方式设置默认时区:
date_default_timezone_set('XXXX');
XXXX代表一个从
通过以下方式初始化日期:
$DateTime = new DateTime();
根据时间戳的位置,假设您将使用PHP创建时间戳:
$timestamp = $DateTime->getTimestamp();
现在格式化输出
echo $month = $DateTime->format( 'm' );
echo $day = $DateTime->format( 'd' );
或获得所需的输出:
echo $output = $DateTime->format( 'dS F' );
您可能需要查看有关日期时间的文档class@GordonM谢谢,我现在就用谷歌搜索一下,看看是否相关。这是mysql的日期/时间值吗?如果是的话,你最好只做
选择day(你的字段)作为day,month(你的字段)作为month
。除此之外,还有select date\u format(您的字段,'%d%M')
来选择您的格式化版本directly@MarcB它是一个mysql时间戳值。不过,我对你的回答有点困惑。比如说,我的字段是“timestamp”,我应该运行选择day(timestamp)作为day,month(timestamp)作为month
,它将反映我需要的值作为结果?@BlackberryFan:是的,没错。mysql有一个巨大的日期/时间函数库,您可以使用:最好在那里进行日期转换,因为如果您在php中进行转换,您将迫使系统执行多个本机->字符串->本机->字符串->等等。。。转换周期。在mysql中直接进行一次转换class@GordonM谢谢,我现在就用谷歌搜索一下,看看是否相关。这是mysql的日期/时间值吗?如果是的话,你最好只做选择day(你的字段)作为day,month(你的字段)作为month
。除此之外,还有select date\u format(您的字段,'%d%M')
来选择您的格式化版本directly@MarcB它是一个mysql时间戳值。不过,我对你的回答有点困惑。比如说,我的字段是“timestamp”,我应该运行选择day(timestamp)作为day,month(timestamp)作为month
,它将反映我需要的值作为结果?@BlackberryFan:是的,没错。mysql有一个巨大的日期/时间函数库,您可以使用:最好在那里进行日期转换,因为如果您在php中进行转换,您将迫使系统执行多个本机->字符串->本机->字符串->等等。。。转换周期。在mysql中直接进行一次转换。这是一个很好的答案,它应该得到不止一颗星:)但我有一个问题,在最后一个问题中,就像你用dS
格式一样,而在下面由polishHurricane给出的答案中,它是jS
。这是什么意思?@BlackberryFan,d=01到31(前导零)j=1到31(非前导零)
你可以在这里找到所有可用的格式:这是一个很好的答案,它应该不止一颗星:)但我有一个问题,在最后一个问题中,就像你一样,格式为dS
,然而,在下面波利斯胡里肯给出的答案中,它是jS
。这是什么意思?@BlackberryFan,d=01到31(前导零)j=1到31(非前导零)
您可以在这里找到所有可用的格式:非常感谢您的回答,这正是我的想法。但现在我不确定这是否是最好的解决办法。我需要时间思考:)非常感谢你的回答,这正是我当时的想法。但现在我不确定这是否是最好的解决办法。我需要时间思考:)我相信你已经完美地回答了我的问题。非常感谢你!请看我在他们的回答中对塔利辛的评论。我相信你已经完美地回答了我的问题。非常感谢你!请看我在他们的回答中对塔利辛的评论。