在BIRT中,我有一个包含日期时间存储为字符串的列。我需要将这些字符串转换为datetime格式,并使用Javascript将结果放在另一列中。 该字符串的形式为:例如:2014年2月21日星期五,上午09:40。
因此,当转换为日期时间格式并导出为excel时,该列应视为日期。 你们中的任何一个人都可以帮我做吗?
干杯,
答案 0 :(得分:4)
其他答案没有考虑到这个问题是在BIRT背景下。
新日期(row [“myDateStringField”]);
其中“myDateStringField”是String格式的DateTime列。然后在报表中使用此计算列而不是String列。
就是这样!
答案 1 :(得分:2)
使用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;
答案 2 :(得分:1)
结帐momentjs!
您可以解析任何格式的时间,例如
moment("12-25-1995", "MM-DD-YYYY");
在您的情况下,您甚至不必指定格式。它会自动识别它。
您可以输出ISO格式或将其转换为Javascript Date对象。
答案 3 :(得分:1)
如果你只是想重新格式化,那就是2014年2月21日星期五,上午09:04&#39; as&#39; 2014-02-21 09:04&#39;,然后以下内容:
function stringToTimestamp(s) {
var t = s.match(/[\d\w]+/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
答案 4 :(得分:0)
使用ISO格式:YYYY-MM-DDTHH:MM:SS或YYYY-MM-DD
new Date('2011-04-11T11:51:00');
或
new Date('2011-04-11');
答案 5 :(得分:0)
希望link有所帮助。它讲的是Javascript Date对象。为清晰起见,请参阅Mozilla documentation。