找回密码
 开放注册

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

通达OA官网网站
搜索
查看: 181|回复: 3

请问13版本有没有内置日期相减的函数?

[复制链接]
已绑定手机

6

主题

6

回帖

36

牛毛

一级牛人

积分
36
发表于 2024-12-31 16:34:28 | 显示全部楼层 |阅读模式 来自 云南省昆明市
如题
已绑定手机

6

主题

6

回帖

36

牛毛

一级牛人

积分
36
 楼主| 发表于 2025-1-1 10:57:16 | 显示全部楼层 来自 云南省昆明市
  1. <?
  2. //函数功能:计算两个日期相差的年数或月数或天数
  3. //参数$date1,$date2为起始日期和结束日期
  4. //参数$val为输出的数据模式,"y"为年,"m"为输出月,"d"为输出天
  5. function datediff($date1,$date2,$val){
  6.   date_default_timezone_set('PRC');//其中PRC为“中华人民共和国”
  7.   $datetime1 = new DateTime($date1);
  8.   $datetime2 = new DateTime($date2);
  9.   $interval = $datetime1->diff($datetime2);
  10.   $MS = $interval->y * 12 + $interval->m;
  11.   $Y=$interval->y;
  12.   $M=$interval->m;
  13.   $D=$interval->d;
  14.   if($D>15){$MS=$MS+1;}
  15.   $DS=$interval->days;
  16.   switch($val){
  17.     case "y":return $YS;break;
  18.     case "m":return $MS;break;
  19.     case "d":return $DS;break;
  20.   }
  21.   }

  22.   //应用
  23.   $date1="2024-01-01";
  24.   $date2="2025-01-01";
  25.   echo datediff($date1,$date2,"y")."年";
  26.   echo datediff($date1,$date2,"m")."月";
  27.   echo datediff($date1,$date2,"d")."天";
  28. ?>
复制代码


这个能用吗?准确不?我用到的是返回月数
已绑定手机

0

主题

19

回帖

27

牛毛

通达OA官方

积分
27
发表于 2025-1-9 10:17:52 | 显示全部楼层
您好,您的代码可能存在两个问题:
1、变量命名错误:在 switch 语句中,case "y" 返回的是 $YS,但 $YS 并未定义。推测应改为返回 $Y。
2、逻辑问题:如果天数超过15天,则将总月数加1的逻辑可能不符合所有场景的需求,具体取决于您的业务需求是否需要这种处理。

在OA中,日期加减需要根据场景来,OA日期加减都由各业务场景来决定的。
已绑定手机

6

主题

6

回帖

36

牛毛

一级牛人

积分
36
 楼主| 发表于 2025-1-20 14:56:23 | 显示全部楼层 来自 云南省昆明市
感谢回复
您需要登录后才可以回帖 登录 | 开放注册

本版积分规则

咨询电话:400 818 0505 通达OA,国内协同管理软件行业内唯一的央企单位,中国协同OA软件的领跑者,优秀协同办公解决方案供应商

帮助|Archiver|小黑屋|通信管理局专项备案号:[2008]238号|由NB5牛论坛提供技术支持NB5社区 ( 皖ICP备08004151号;皖公网安备34010402700514号 )

GMT+8, 2025-2-14 16:42 , Processed in 0.141263 second(s), 40 queries .

Powered by Discuz

Copyright © 2001-2025, 北京通达信科科技有限公司.

快速回复 返回顶部 返回列表