为了账号安全,请及时绑定邮箱和手机立即绑定

C# 与时刻中的日期差异计算.js

C# 与时刻中的日期差异计算.js

交互式爱情 2022-09-02 19:45:26
我在两个日期进行计算。我需要找出用户在网站中使用其合同的剩余天数。我有到期日存储在数据库中。我需要将其与当前日期进行比较,并获取剩余的天数来享受他们的订阅。最初,此剩余天数计算在 C# 中。var daysLeft = Convert.ToInt32((data.expiryDate.Date - DateTime.Now.Date).TotalDays);//Say, the expiryDate is Thu Dec 31 2020 00:00:00 GMT+0530 (India Standard Time), And daysLeft is 220 for the above statement现在我在Moment中尝试了相同的方法.js客户端。moment(data.expiryDate).diff(moment(), 'days')//Say, the expiryDate is Thu Dec 31 2020 00:00:00 GMT+0530 (India Standard Time) and it is giving 219.我还尝试在将其转换为YYYY-DD-MM后以相同的格式减去两个日期,如下所示,这给出了错误moment(data.expiryDate).format('YYYY-DD-MM').diff(moment().format('YYYY-DD-MM'), 'days')Object doesn't support property or method 'diff'为什么在C#中是220,而在瞬间.js它是219?我错过了什么吗?请告诉我计算错误的地方。
查看完整描述

2 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

当您在 c# 中执行此操作时:


data.expiryDate.Date - DateTime.Now.Date

你实际上减去了一整天(因为结果是时间)。.Date00:00:00.000


现在,您在 js 中执行以下操作:


moment(data.expiryDate).diff(moment(), 'days')

这里的区别在于你减去了日期和时间。


注意(不使用):.Now.Date


var expiryDate = DateTime.Parse("12/31/2020 10:00:00");

Console.WriteLine((expiryDate.Date - DateTime.Now).TotalDays);

当具有返回的相同代码时返回219.654703995023.Date220


TL;DR:


---------------------------------------------------------------

|       moment.js       |       C#                            |

---------------------------------------------------------------

|moment()               | DateTime.Now                        |

|moment().startOf('day')| DateTime.Today (=DateTime.Now.Date) |

---------------------------------------------------------------

如果你想要你的javascript部分得到相同的结果,你应该使用(这似乎相当于根据Moment.js |家.startOf('day').Date)


查看完整回答
反对 回复 2022-09-02
?
莫回无

TA贡献1865条经验 获得超7个赞

在 C# 中,TotalDays 表示整数天数和小数天数,返回类型为双倍。转换为int将舍入为最接近的32位有符号整数。在片刻.js,diff 会将结果截断为零位小数,并返回一个整数。但在 2.0.0 之前,diff 返回一个四舍五入到最接近整数的数字,而不是截断的数字。


查看完整回答
反对 回复 2022-09-02
  • 2 回答
  • 0 关注
  • 94 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信