【问题标题】:Subtracting Date time value减去日期时间值
【发布时间】:2014-01-21 16:57:48
【问题描述】:

调用以下代码时,我将课程的上传日期保存在 ViewModel 变量 @Model.Course.UploadDate 中:

alert('@Model.Course.UploadDate');

我得到了预期的输出:

21/01/2014 16:16:13

我知道想在向数据库发送语句之前检查 uploadDate 是否在最后 10 秒内,但尝试使用以下代码:

var uploadDate = new Date('@Model.Course.UploadDate.ToLongDateString()');
alert("UPLOAD DATE " + uploadDate);

我得到了一个意外的输出:

Tue Jan 21 2013 00:00:00 GMT+0000

这是我只需要显示已保存时间数据的日期格式。然后我希望执行如下计算:

var TENSECONDS = 10 * 1000;
var uploadDate = new Date('@Model.Course.UploadDate.ToLongDateString()');
var today = new Date();
var check = today - uploadDate;

if (parseInt(check) > parseInt(TENSECONDS))
        alert("ROUTE1");
    else
        alert("ROUTE2");

【问题讨论】:

  • 我对 asp.net 不感兴趣,但我想会有一个类似 dateformat(Model.Course.UploadDate.ToLongDateString(),'%mm/%dd/%yyyy %hh:%MM:%ss') 的 dateformat 函数

标签: javascript asp.net-mvc-4 datetime viewmodel


【解决方案1】:

引用 Date 对象构造函数的documentation

value:整数值,表示从 1 开始的毫秒数 1970 年 1 月 00:00:00 UTC(Unix 纪元)。

所以实际上这是传递给 Date 对象的构造函数的最安全的东西,而不是一些可能被错误解释并且完全依赖于文化的字符串。

因此,只需将您的 DateTime 实例转换为自 1970 年 1 月 1 日以来经过的毫秒数,然后将此时间戳提供给构造函数:

var timestamp = @(Model.Course.UploadDate - new DateTime(1970, 1, 1)).TotalSeconds;
var uploadDate = new Date(timestamp);

如果您打算传递字符串,也可以使用 ISO8601 格式:

dateString:表示日期的字符串值。字符串应该在 Date.parse() 方法识别的格式(符合 IETF 的 RFC 2822 个时间戳,也是 ISO8601 的一个版本)。

所以:

var uploadDate = new Date('@Model.Course.UploadDate.ToString("o")');

【讨论】:

  • 完美的达林就是我想要的
【解决方案2】:

我使用以下代码解决了这个问题:

var dateArray = new Array();
dateArray = '@Model.Course.UploadDate'.split("/");
var dateD = dateArray[0];
var dateM = dateArray[1];
var dateY = dateArray[2];
var dateT = dateArray[3];
timeArray = dateT.split(":");
var timeH = timeArray[0];
var timeM = timeArray[1];
var timeS = timeArray[2];
var dateUS = dateM + "/" + dateD + "/" + dateY + dateT;
var uploadDate = new Date(dateD,dateM,dateY,timeH,timeM,timeS);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    • 1970-01-01
    • 1970-01-01
    • 2011-02-14
    • 2020-11-14
    相关资源
    最近更新 更多