duancan7914 2019-01-08 18:17
浏览 94
已采纳

DateTime不适用于1970年以前的日期[重复]

This question already has an answer here:

PHP v 5.6.2

I need to convert dates such as 18-Jul-46 to give me 18/07/1946 and no amount of DateTime functions work correctly. (As strtotime wont work for dates before 1970). They all end up giving 18/07/2046 which is incorrect.

Codes I tried so far:

$date = new DateTime("18-Jul-46");
$date->format('d/m/Y');

Another one with DateTime

$date = DateTime::createFromFormat('d-M-y', "18-Jul-46");
$date->format('d/m/Y');

Earlier also tried,

$date = date('d/m/Y', strtotime('18-Jul-46'));

None of them gave me the correct format. Any pointers or help is appreciated.

Thanks in advance!

</div>
  • 写回答

2条回答 默认 最新

  • duanlvji4780 2019-01-08 18:23
    关注

    The computer doesn't know whether you mean 2000 or 1900. You can just take the last 2 digits of the year and put "19" before like:

    $date = new DateTime("18-Jul-46");
    $date->format('d/m/19y');
    

    If you want to use 2000 as well, this code will use the closest number to 1970

    $date = new DateTime("18-Jul-20");
    $date->format('d/m/Y');
    $t1 = $date->format('19y');
    $t2 = $date->format('20y');
    
    if(abs(1970-$t1)<abs(1970-$t2))
        echo $t1; //Take the 19.. one
    else
        echo $t2; //Take the 20.. one
    

    But in the end, you can't be sure that even 2030 would be correct.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行