使用Javascript将字符串(日期格式)转换为日期时间



在BIRT中,我有一个包含日期时间的列,存储为字符串。我需要将这些字符串转换为日期时间格式,并使用Javascript将结果放在另一列中。字符串的形式为:例如:Fri 21 Feb 2014, 09:40 AM。

因此,当转换为日期时间格式并导出到excel时,该列应被视为日期。你们谁能帮我做这件事?

欢呼,

其他答案没有考虑到这个问题是在BIRT上下文中。

  • 在数据集中创建一个计算列,数据类型为"Date time"
  • 输入表达式:

新日期(行[" myDateStringField "]);

其中"myDateStringField"是字符串格式的DateTime列。然后在报告中使用此计算列,而不是字符串列。

就是这样!

Checkout moments !

您可以解析任何格式的时间,如

moment("12-25-1995", "MM-DD-YYYY");

在你的例子中,你甚至不需要指定格式。它会自动识别。

您可以输出ISO格式或将其转换为Javascript Date对象。

使用javascript非常容易做到这一点。下面的代码将以Excel可以识别为日期的格式生成日期。

http://jsfiddle.net/bbankes/d7SwQ/

var dateString = 'Fri 21 Feb 2014, 09:40 AM';
var date = new Date(dateString);
var yr = date.getFullYear();
var mo = date.getMonth() + 1;
var day = date.getDate();
var hours = date.getHours();
var hr = hours < 10 ? '0' + hours : hours;
var minutes = date.getMinutes();
var min = (minutes < 10) ? '0' + minutes : minutes;
var seconds = date.getSeconds();
var sec = (seconds < 10) ? '0' + seconds : seconds;
var newDateString = yr + '-' + mo  + '-' + day;
var newTimeString = hr + ':' + min + ':' + sec;
var excelDateString = newDateString + ' ' + newTimeString;

如果您只是想将'Fri 21 Feb 2014, 09:04 AM'重新格式化为'2014-02-21 09:04',则可以使用以下命令:

function stringToTimestamp(s) {
  var t = s.match(/[dw]+/g);
  var months = {jan:'01',feb:'02',mar:'03',apr:'04',may:'05',jun:'06',
                jul:'07',aug:'08',sep:'09',oct:'10',nov:'11',dec:'12'};
  function pad(n){return (n<10?'0':'') + +n;}
  var hrs = t[4] % 12;
  hrs += /pm$/i.test(t[6])? 12 : 0;
  return t[3] + '-' + months[t[2].toLowerCase()] + '-' + pad(t[1]) + ' ' +
         pad(hrs) + ':' + pad(t[5]);
}
console.log(stringToTimestamp('Fri 21 Feb 2014, 09:04 AM')); // 2014-02-21 09:04

使用ISO格式:YYYY-MM-DDTHH:MM:SS或YYYY-MM-DD

new Date('2011-04-11T11:51:00');

new Date('2011-04-11');

相关内容

  • 没有找到相关文章

最新更新