簡體   English   中英

使用Javascript將字符串(日期格式)轉換為日期時間

[英]Convert a string (in date format) to datetime using Javascript

在BIRT中,我有一列包含以字符串形式存儲的日期時間。 我需要將這些字符串轉換為日期時間格式,然后使用Javascript將結果放入另一列中。 字符串的格式為:例如:2014年2月21日,星期五,上午09:40。

因此,將其轉換為日期時間格式並導出到excel時,應將該列視為日期。 你們中的任何一個可以幫助我做到嗎?

干杯,

在BIRT上下文中,其他答案未考慮此問題。

  • 在數據集中創建一個計算列,以“日期時間”作為數據類型
  • 輸入表達式:

新的Date(row [“ myDateStringField”]);

其中“ myDateStringField”是您的String格式的DateTime列。 然后在報表中使用此計算列而不是“字符串”列。

而已!

結賬momentjs

您可以解析任何格式的時間,例如

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;

如果您只想將“ 2014年2月21日星期五,09:04 AM”重新格式化為“ 2014-02-21 09:04”,則可以執行以下操作:

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

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

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

要么

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

希望此鏈接有所幫助。 它談到了Javascript Date對象。 請參閱Mozilla 文檔以獲取清晰說明。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM