使用JavaScript解析.NET日期

21 浏览
0 Comments

使用JavaScript解析.NET日期

这是我的变量的值:\n

date.dateFrom = /Date(1328137200000)/

\n这是我如何使用它的方法:\n

$('#txtBoxDateFrom').val(data.dateFrom);

\n如何将它转换为“正常”的外观?\n我认为“正常”的外观是这样的:01/01/2012

0
0 Comments

问题出现的原因是在使用JavaScript中的Date对象的toString方法或其他相关方法(如toDateString、toLocaleString等)时,无法正确解析.NET日期格式。这是因为JavaScript中的Date对象在解析日期时,对于不同的日期格式有不同的处理方式,而.NET日期格式与JavaScript的默认解析方式不一致,导致解析错误。

要解决这个问题,可以使用第三方库或自定义函数来解析.NET日期格式。以下是一种可能的解决方法:

1. 使用第三方库:可以使用Moment.js等流行的JavaScript日期库来解析.NET日期格式。Moment.js提供了丰富的日期解析和格式化功能,可以轻松处理.NET日期格式。使用Moment.js的parse方法可以将.NET日期字符串解析为JavaScript的Date对象。

var dateString = "2022-01-01T10:30:00";
var date = moment(dateString, "YYYY-MM-DDTHH:mm:ss").toDate();

2. 自定义解析函数:如果不想引入第三方库,也可以编写自定义函数来解析.NET日期格式。以下是一个简单的示例:

function parseDotNetDate(dateString) {
  var parts = dateString.split(/[-T:]/);
  var year = parseInt(parts[0]);
  var month = parseInt(parts[1]) - 1;
  var day = parseInt(parts[2]);
  var hour = parseInt(parts[3]);
  var minute = parseInt(parts[4]);
  var second = parseInt(parts[5]);
  return new Date(year, month, day, hour, minute, second);
}
var dateString = "2022-01-01T10:30:00";
var date = parseDotNetDate(dateString);

通过使用Moment.js或自定义函数,我们可以正确解析.NET日期格式,从而避免日期解析错误的问题。无论使用哪种方法,都可以根据具体的需求进行调整和扩展,以适应不同的.NET日期格式。

0
0 Comments

问题的原因是函数FormatDate在格式化日期时,没有正确获取日期、月份和年份的值。解决方法是在获取日期、月份和年份的值之前,先进行判断,如果值小于等于9,则在前面添加0。这样可以确保日期、月份和年份始终为两位数。

以下是修复后的代码:

function FormatDate(d)
{
  var day = d.getDate();
  var month = d.getMonth() + 1;
  var year = d.getFullYear();
  return (month <= 9 ? '0'+month : month) + "/" + (day <= 9 ? '0'+day : day) + "/" + year;
}
var formatted = FormatDate(new Date(1328137200000));
// 输出为02/02/2012

然而,尽管修复了函数FormatDate,但问题依然存在。当调用FormatDate函数时,它总是返回3/19,即使日期不是那个日期。经过检查,发现问题出在变量d的赋值上。原先的代码中,变量d被赋值为new Date(),这是一个获取当前日期和时间的方法。为了解决这个问题,将变量d的赋值更正为new Date(1328137200000)。

以下是修复后的代码:

var d = new Date(1328137200000);
var formatted = FormatDate(d);
// 输出为02/02/2012

现在,调用FormatDate函数将会正确返回解析后的日期。

0