Php 需要将字符串更改为日期

Php 需要将字符串更改为日期,php,Php,我有一些计时字符串,比如 $timing_strings =array(1=>'just now', 2=>'3 minutes ago', 3=>'3 weeks ago'); 问题是我想将这种类型的字符串更改为特定的日期时间格式。我该怎么做。。?我需要一个输出,比如 array( 1=>'2013-10-04 06:24:24', 2=>'2013-10-04 06:21:24', 3=>'2013-09-14 06:24:24' ); 我找不到任何解

我有一些计时字符串,比如

$timing_strings =array(1=>'just now', 2=>'3 minutes ago', 3=>'3 weeks ago');
问题是我想将这种类型的字符串更改为特定的日期时间格式。我该怎么做。。?我需要一个输出,比如

array(
1=>'2013-10-04 06:24:24',
2=>'2013-10-04 06:21:24',
3=>'2013-09-14 06:24:24'
);

我找不到任何解决方案,任何想法都值得赞赏。提前感谢

您有两个独立的问题:解析字符串到日期和转换值

解析迄今为止的字符串最终是一个复杂的问题。
strotime
DateTime
可以解析大多数日期格式,但不是全部。 例如,它们不会解析“刚才”。 当然,您可以使用自己的硬编码值来扩展它

不过,转换值很简单:

array_map(
    function ($dateString) {
        if ($dateString === 'just now') {
            $dateString = 'now';
        }
        return (new DateTime($dateString))->format('Y-m-d H:i:s');
    },
    $timing_strings
);

您有两个独立的问题:解析字符串到日期和转换值

解析迄今为止的字符串最终是一个复杂的问题。
strotime
DateTime
可以解析大多数日期格式,但不是全部。 例如,它们不会解析“刚才”。 当然,您可以使用自己的硬编码值来扩展它

不过,转换值很简单:

array_map(
    function ($dateString) {
        if ($dateString === 'just now') {
            $dateString = 'now';
        }
        return (new DateTime($dateString))->format('Y-m-d H:i:s');
    },
    $timing_strings
);

您应该能够使用

转换大多数时间字符串您应该能够使用

转换大多数时间字符串请尝试以下操作:

<?
$timing_strings =array(1=>'just now', 2=>'3 minutes ago', 3=>'3 weeks ago');
foreach ($timing_strings as $time){
    if ($time == 'just now') $time = 'now';
    $arrTime[] = date("Y-m-d H:i:s",strtotime($time));
}

print_r($arrTime);
?>

试试这个:

<?
$timing_strings =array(1=>'just now', 2=>'3 minutes ago', 3=>'3 weeks ago');
foreach ($timing_strings as $time){
    if ($time == 'just now') $time = 'now';
    $arrTime[] = date("Y-m-d H:i:s",strtotime($time));
}

print_r($arrTime);
?>

使用了以下代码:

<?php

$timing_strings =array(1=>'just now', 2=>'3 minutes ago', 3=>'3 weeks ago');
$new_arr=array();
foreach ($timing_strings as $time) {
    $new_arr[]  = check_time($time);
}

echo "<pre>";
print_r($new_arr);
echo "</pre>";
exit;

function check_time($time) {
    if (strpos($time,'just now') !== false) {
        return  date("Y-m-d H:i:s",strtotime('now'));
    }elseif (strpos($time,'minutes ago') !== false) {
        return  date("Y-m-d H:i:s",strtotime('-'.(int)$time.' minutes'));
    }elseif (strpos($time,'weeks ago') !== false) {
        return  date("Y-m-d H:i:s",strtotime('-'.((int)$time*7).' days'));
    }
}
使用此代码:

<?php

$timing_strings =array(1=>'just now', 2=>'3 minutes ago', 3=>'3 weeks ago');
$new_arr=array();
foreach ($timing_strings as $time) {
    $new_arr[]  = check_time($time);
}

echo "<pre>";
print_r($new_arr);
echo "</pre>";
exit;

function check_time($time) {
    if (strpos($time,'just now') !== false) {
        return  date("Y-m-d H:i:s",strtotime('now'));
    }elseif (strpos($time,'minutes ago') !== false) {
        return  date("Y-m-d H:i:s",strtotime('-'.(int)$time.' minutes'));
    }elseif (strpos($time,'weeks ago') !== false) {
        return  date("Y-m-d H:i:s",strtotime('-'.((int)$time*7).' days'));
    }
}

是否可以使用
strotime
转换字符串,如刚才的
,应该是,我链接到了文档。不是所有的字符串都能正常工作好的……那么我想我需要编写一些提取单词的条件,比如now、week等,然后用
strotime
进行更改。我说的对吗……??是否可以使用
strotime
转换字符串,比如刚才的
,应该是这样的,我链接到了文档。不是所有的字符串都能工作好吧……那么我想我需要写一些提取单词的条件,比如现在、星期等等,然后用
strotime
。我说得对吗…?@SherinJose这是我的荣幸:)@SherinJose这是我的荣幸:)