首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >获取跳出办公时间的两个日期时间之间的时间差

获取跳出办公时间的两个日期时间之间的时间差
EN

Stack Overflow用户
提问于 2018-02-19 16:06:19
回答 1查看 33关注 0票数 0

我正在尝试找出跳过非办公时间的两个日期时间字段之间的差异

此方法计算两个日期时间字段之间的差值

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
moment.utc(moment(data.ClosureDate).diff(moment(data.Created))).format("HH:mm:ss")

这个很好用,但是我不知道如何扣除不在工作时间的时间

我想每天只考虑上午9点到下午6点的时间并计算差额。

例如,如果date.Created为Feb-19 7 7PM,date.ClosureDate为Feb-20 11 20,则差异应为2小时

有没有可能使用Javascript、moment或其他库来实现这一点?

EN

回答 1

Stack Overflow用户

发布于 2018-02-19 17:26:28

您可以使用此函数,它以毫秒为单位返回结果。HH:mm:ss的格式被保留在它之外,因为当周期跨越几天时,它将不能很好地呈现:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function officeTimeDiff(a, b) {
    a = moment(a);
    b = moment(b);
    if (b.diff(a) < 0) return 0;
    if (a.hour() <   9) a = a.hour(9).startOf('hour');
    if (a.hour() >= 18) a = a.add(1, 'day').hour(9).startOf('hour');    
    if (b.hour() <   9) b = b.add(-1, 'day').hour(18).startOf('hour');
    if (b.hour() >= 18) b = b.hour(18).startOf('hour');
    const diff = b.clone().year(a.year()).month(a.month()).date(a.date()).diff(a);
    a = a.startOf('day');
    b = b.startOf('day');
    return diff + moment.duration(b.diff(a, 'day') * 9, 'hour').asMilliseconds();
}

console.log(moment.utc(officeTimeDiff('2018-02-19 19:22:09', '2018-02-20 11:01:08')).format('HH:mm:ss'));
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.0/moment.min.js"></script>

如果您想要排除周末,则必须添加类似的逻辑,但在您的问题中没有提到这是必需的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48869909

复制
相关文章
SQL---计算两个日期之间的时间差
在进行日期处理的时候,有时会需要计算一下两个日期之间相差几年零几个月,这里记录一下,如何用mysql数据库和java结合,准确的拿到两个日期之间的时间差。
IT云清
2019/01/22
7.8K0
Java获取两个日期之间的日期
/** * 获取两个日期之间的日期 * @param start 开始日期 * @param end 结束日期 * @return 日期集合 */ private List<Date> getBetweenDates(Date start, Date end) { List<Date> result = new ArrayList<Date>(); Calendar tempStart = Calendar.g
水煮麥楽雞
2022/11/20
6.1K0
机房收费系统——用DateDiff函数计算两个日期之间的时间差
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/details/10991371
DannyHoo
2018/09/13
2.4K0
MySql 计算两个日期的时间差函数
返回日期或日期时间表达式datetime_expr1 和datetime_expr2the 之间的整数差。其结果的 单位由interval 参数给出。interval 的法定值同TIMESTAMPADD()函数说明中所列出的相同。
一个会写诗的程序员
2018/09/12
4.2K0
如何用Python获取两个日期之间的日期?
问:如何用Python获取两个日期之间的日期? def date_range(start, end): delta = end - start # as timedelta days = [start + timedelta(days=i) for i in range(delta.days + 1)] return days start_date = datetime(2020, 12, 1) end_date = datetime(2020, 12, 5) print(d
TalkPython
2020/12/11
5.8K0
python获取指定时间差的时间
需要截取一定范围时间的数据,比如三天之内,两小时前等等时间要求的数据,因此将该部分经常需要用到的功能模块化,方便以后以后用到的时候复用。 ''' Created on 2018年02月3日 ''' import time import sys reload(sys) def get_day_of_day(UTC=False, days=0, hours=0, miutes=0, seconds=0): '''''
IT架构圈
2018/05/31
2K0
mysql计算两个时间字段的时间差
TIMESTAMPDIFF(datepart,startdate,enddate)
赵哥窟
2020/08/11
7.3K0
日期工具类-操作字符串和Date、LocalDate互转,两个日期的时间差等
避免重复造轮子,相关方法基于hutool日期时间工具封装并做部分增强。需要先引入如下坐标
共饮一杯无
2022/11/28
1.2K0
巧妙测量服务器之间的时间差
昨天,和大家讨论了无线APP时代如何进行日志上报优化【回复“日志”阅读】,今天和大家一起讨论一下如何巧妙测量服务器之间的时间差。
Java架构师必看
2021/09/23
1.9K1
巧妙测量服务器之间的时间差
昨天,和大家讨论了无线APP时代如何进行日志上报优化【回复“日志”阅读】,今天和大家一起讨论一下如何巧妙测量服务器之间的时间差。 缘起:无绝对时钟 Fischer Lynch Paterson定理是分布式理论中非常重要的一个定理,其结论相当悲观:在一个多进程异步系统中,由于没有全局绝对时钟,一定不存在一个一致的消息投递协议。 工程折衷:单点序列化 每个进程,每台服务器都有自己的本地时钟,跨服务器的本地时钟比较是没有意义的,这一点很好理解,服务器A上的本地时间ta=1,服务器B上的本地时间tb=2,虽然ta<
架构师之路
2018/03/01
1.4K0
巧妙测量服务器之间的时间差
golang如何计算两个日期之间的日期差?
golang如何计算两个日期之间的日期差? 日期格式:“2017-09-01” ,“2018-03-11”
双面人
2022/09/28
7.4K0
javascript计算两个时间差
  其实,javascript计算时间差的方式非常简单,如果是默认的Date()类型,直接相减就是相差的毫秒数。
ydymz
2018/09/10
3.8K0
typecho 获取文章时间及时间差计算
获取文章最后修改时间: &lt;?php echo date(&apos;Y&#x5E74;m&#x6708;d&#x65E5;&apos; , $this-&gt;modified);?&gt; 获
怪兽
2022/10/04
1.1K0
Java8计算日期时间差
ChronoUnit类可用于在单个时间单位内测量一段时间,例如天数或秒。 以下是使用between()方法来查找两个日期之间的区别的示例。
JavaEdge
2021/02/23
2K0
python下的日期与时间(时间格式转换、时间戳处理,时间差处理)
时间戳单位最适于做日期运算。但是1970年之前的日期就无法以此表示了。太遥远的日期也不行,UNIX和Windows只支持到2038年。
学到老
2019/01/25
14K0
关于C#获取动态的时间差函数
   在QQ等空间中,我们常常看到某某条动态发布与多少秒前(32秒前)、1分钟前、1小时前、1天前、1个月前,但是我们对于数据库中存的时间格式为:2016-05-18 00:19:21.437 --去苦恼与无法转换,下面提供一个方法。 /// <summary> /// /// </summary> /// <param name="dt">发布动态的时间</param> /// <returns></returns> pub
牛嗷嗷
2018/03/30
1.2K0
25:计算两个日期之间的天数
25:计算两个日期之间的天数 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB描述 给定两个日期,计算相差的天数。比如2010-1-1和2010-1-3相差2天。 输入共两行: 第一行包含三个整数startYear,startMonth,startDay,分别是起始年、月、日。 第二行包含三个整数endYear,endMonth,endDay,分别是结束年、月、日。 相邻两个整数之间用单个空格隔开。 年份范围在1~3000。保证日期正确且结束日期不早于起始日期。输出
attack
2018/04/11
5K0
Python时间,日期,时间戳之间转换
1.将字符串的时间转换为时间戳    方法:        a = "2013-10-10 23:40:00"        将其转换为时间数组        import time        timeArray = time.strptime(a, "%Y-%m-%d %H:%M:%S")    转换为时间戳:    timeStamp = int(time.mktime(timeArray))    timeStamp == 1381419600 2.字符串格式更改    如a = "2013-10-10 23:40:00",想改为 a = "2013/10/10 23:40:00"    方法:先转换为时间数组,然后转换为其他格式    timeArray = time.strptime(a, "%Y-%m-%d %H:%M:%S")    otherStyleTime = time.strftime("%Y/%m/%d %H:%M:%S", timeArray) 3.时间戳转换为指定格式日期:    方法一:        利用localtime()转换为时间数组,然后格式化为需要的格式,如        timeStamp = 1381419600        timeArray = time.localtime(timeStamp)        otherStyleTime = time.strftime("%Y-%m-%d %H:%M:%S", timeArray)        otherStyletime == "2013-10-10 23:40:00"    方法二:        import datetime        timeStamp = 1381419600        dateArray = datetime.datetime.utcfromtimestamp(timeStamp)        otherStyleTime = dateArray.strftime("%Y-%m-%d %H:%M:%S")        otherStyletime == "2013-10-10 23:40:00" 4.获取当前时间并转换为指定日期格式    方法一:        import time        获得当前时间时间戳        now = int(time.time())  ->这是时间戳        转换为其他日期格式,如:"%Y-%m-%d %H:%M:%S"        timeArray = time.localtime(timeStamp)        otherStyleTime = time.strftime("%Y-%m-%d %H:%M:%S", timeArray)    方法二:        import datetime        获得当前时间        now = datetime.datetime.now()  ->这是时间数组格式        转换为指定的格式:        otherStyleTime = now.strftime("%Y-%m-%d %H:%M:%S") 5.获得三天前的时间    方法:        import time        import datetime        先获得时间数组格式的日期        threeDayAgo = (datetime.datetime.now() - datetime.timedelta(days = 3))        转换为时间戳:            timeStamp = int(time.mktime(threeDayAgo.timetuple()))        转换为其他字符串格式:            otherStyleTime = threeDayAgo.strftime("%Y-%m-%d %H:%M:%S")    注:timedelta()的参数有:days,hours,seconds,microseconds 6.给定时间戳,计算该时间的几天前时间:    timeStamp = 1381419600    先转换为datetime    import datetime    import time    dateArray = datetime.datetime.utcfromtimestamp(timeStamp)    threeDayAgo = dateArray - datetime.timedelta(days = 3)    参考5,可以转换为其他的任意格式了
py3study
2020/01/08
2.5K0
PHP获取当前时间差8小时的问题
<?php   echo   date("Y-m-d   H:i:s");  //当前时间 ?> 这个方法获取的时间和标准时间差8小时; 从php5.1.0开始,php.ini里加入了date.t
Java架构师必看
2021/03/22
1.5K0
点击加载更多

相似问题

获取两个日期时间之间的时间差

2236

熊猫-在日期和时间之间获取办公时间

11

Javascript获取两个日期之间的时间差

21

两个日期之间的日期时间差

32

JAVA获取两个日期之间的中断时间差异

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文