将奇怪的格式化时间戳分成可理解的日期

时间:2018-06-05 20:56:31

标签: php

我正在处理一个返回变量的XML文档,并且由于某种原因在xml返回时,时间戳的格式如下... 20180606T110000 ...为什么有人会像那样格式化它对我没有意义;然而,它是我必须与之合作的。 IT格式为YYYYMMDD,T是日期和时间之间的分割,HHMMSS。 IT设置为24小时制,我还需要转换为12小时制,上午/下午

我需要格式化为06/06/2018 11:00:00 AM。

有没有办法通过日期格式(我知道如何使用date()但我不知道如何以格式化的方式引入时间戳)或甚至将其分成

$year = xxxx 
$month = xx 
$day = $xx 
$Hour=xx 
etc. etc. etc. 

如果需要的话。

我简要地看了一下php的格式(date_create_from_format('j-M-Y', '15-Feb-2009'))创建的日期,但并不完全理解它是如何工作的。

我也考虑过分裂。我也看过chunk_split和wordwrap,但它的字符数量甚至都不多,因此创建起来很复杂。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您正在使用的格式是" XMLRPC(Compact)"格式。这完全由PHP支持(您可以看到支持的格式列表here)。要获得所需内容,只需使用strtotime()date()的组合。

it 'will throw auth token error' do
    create :logged_in_session, session_identifier: logged_in_session_cookie, auth_token: logged_in_auth_token, updated_at: 1.week.ago

    Ccms::ClientSession.first.update(AuthToken: '1')

    expect {post :create, params: valid_credentials, session: {}}.to raise_error(ActionController::InvalidAuthenticityToken)
end

答案 1 :(得分:1)

您可以使用PHP DateTime以任何格式解析日期时间字符串。请查看以下链接中的参数格式,以了解" Ymd \ THis"部分有效:http://php.net/manual/en/datetime.createfromformat.php

<?php

$time = "20180606T110000";

$date = DateTime::createFromFormat("Ymd\THis", $time);

// 06/06/2018 11:00:00 AM.
echo $date->format("d/m/Y h:i:s A");