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

我在两个日期进行计算。我需要找出用户在网站中使用其合同的剩余天数。我有到期日存储在数据库中。我需要将其与当前日期进行比较,并获取剩余的天数来享受他们的订阅。


最初,此剩余天数计算在 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?我错过了什么吗?请告诉我计算错误的地方。


交互式爱情
浏览 132回答 2
2回答

慕慕森

当您在 c# 中执行此操作时:data.expiryDate.Date - DateTime.Now.Date你实际上减去了一整天(因为结果是时间)。.Date00:00:00.000现在,您在 js 中执行以下操作:moment(data.expiryDate).diff(moment(), 'days')这里的区别在于你减去了日期和时间。注意(不使用):.Now.Datevar expiryDate = DateTime.Parse("12/31/2020 10:00:00");Console.WriteLine((expiryDate.Date - DateTime.Now).TotalDays);当具有返回的相同代码时返回219.654703995023.Date220TL;DR:---------------------------------------------------------------|       moment.js       |       C#                            |---------------------------------------------------------------|moment()               | DateTime.Now                        ||moment().startOf('day')| DateTime.Today (=DateTime.Now.Date) |---------------------------------------------------------------如果你想要你的javascript部分得到相同的结果,你应该使用(这似乎相当于根据Moment.js |家.startOf('day').Date)

莫回无

在 C# 中,TotalDays 表示整数天数和小数天数,返回类型为双倍。转换为int将舍入为最接近的32位有符号整数。在片刻.js,diff 会将结果截断为零位小数,并返回一个整数。但在 2.0.0 之前,diff 返回一个四舍五入到最接近整数的数字,而不是截断的数字。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript