从PHP

时间:2017-04-28 23:06:16

标签: php json

我从JSON响应中获取以下日期格式,并希望更好地格式化,但我有点不确定如何。

当前回复:Wed Mar 02 03:00:00 +1100 2016

所需回应:2016年3月2日

当前用于输出的PHP:

$purchase_data['verify-purchase']['supported_until']

3 个答案:

答案 0 :(得分:1)

这里有一些特殊格式,但在阅读手册时可能。 也照顾时区...

<?php

//custom function
function reformatDate( $old, $correction ) {
    // makes it a number of seconds since 1970…
    $old_date_timestamp = strtotime( $old ); 
    //formats again as string
    return date( 'jS F Y', $old_date_timestamp + $correction ); 
}

//Input: Wed Mar 02 03:00:00 +1100 2016
//timezone needs to be taken care of
print reformatDate(
  "Wed Mar 02 03:00:00 +1100 2016", //here you put your input variable
  11*60*60 // here 11h, but maybe the difference of timezones needs to be changed – only you will know after edge cases ;)
);
//desired output: 2nd of March 2016 – check

?>

要做得更好,你可以从当地环境询问你自己的时区。 date也可以帮助你,或者你通过timezone_offset_get自动执行...后者更加棘手,因为它在未设置之前会引发错误。

答案 1 :(得分:0)

试试这个:

function persistence(num, counter = 0) {
  if (num.toString().length != 1) {
    num = num.toString().split("").filter(Number).reduce((a, b) => a * b);
    return persistence(num, ++counter);
  } else {
    return counter;
  }
}

答案 2 :(得分:-1)

有人在这里发布了答案,但由于某种原因被删除了,但是我使用了他们的一些解决方案并进行了调整并创建了一个函数,因此对于其他需要处理以这种方式格式化的返回日期的人来说,这就是我所做的

function dateFormat($date){
    $current_date = $date;
    return date("jS", strtotime($current_date) ) . ' of ' . date("F Y", strtotime($current_date) );
}

然后就这样称呼它......

dateFormat($purchase_data['verify-purchase']['supported_until']);

输出来自:

  

Wed Mar 02 03:00:00 +1100 2016

要:

  

2016年3月1日

实际上现在注意到写这个,它是第一个而不是第二个?

<强>已更新

更新@vv01f的回答以更正日期,这是最终结果

function dateFormat( $old, $correction ) {
    $old_date_timestamp = strtotime( $old );
    return date( 'jS F Y', $old_date_timestamp + $correction );
}

这样称呼它......

dateFormat($purchase_data['verify-purchase']['supported_until'], 11*60*60);