0

我有一个包含数千行 JSON 数据的变量。一些变量是以下格式的日期Fri Jun 27 2008 00:00:00 GMT-0700 (US Mountain Standard Time)。我需要将所有这些变量转换为更可用的日期格式,例如“mm/dd/yyyy”。

关于如何做到这一点的任何建议?

{
"request": [
{ "startdate":"Fri Jun 27 2008 00:00:00 GMT-0700 (US Mountain Standard Time)" ,
  "status":"in progress" }, ...
]}

提前致谢!

4

3 回答 3

3

您可以在实例化 Date 类时将日期字符串作为参数传递。Javascript 没有很好的日期格式化程序,但您可以轻松滚动自己的日期格式化程序。例如:

function parseDate(date) {
  var d = new Date(date);
  var month = d.getMonth() + 1;
  var day = d.getDate();
  var year = d.getFullYear();
  if(month < 10) month = '0' + month;
  if(day < 10) day = '0' + day;
  return month + '/' + day + '/' + year;
}
parseDate('Fri Jun 27 2008 00:00:00 GMT-0700 (US Mountain Standard Time)');
// returns "06/27/2008"
于 2013-04-11T01:03:35.430 回答
2

尝试以下操作:

var json = {
    "request": [
      { "startdate":"Fri Jun 27 2008 00:00:00 GMT-0700 (US Mountain Standard Time)" ,
        "status":"in progress" }
]};
var date = new Date(json.request[0].startdate);
var formatDate = function(date) {
  var mm = date.getMonth()+1;
      mm = mm > 10 ? mm : "0"+mm;
  var dd = date.getDate();
      dd = dd > 10 ? dd : "0"+dd;
  var yy = date.getFullYear();
  return mm+"/"+dd+"/"+yy;
}
var formattedDate = formatDate(date);
于 2013-04-11T01:03:33.653 回答
1

将字符串转换为日期对象总是最好的方法是手动解析它,除非您有一个非常受控的环境。以下应该做的工作:

// Use date string to create a UTC time to pass to Date constructor
// Expected format is day mon year hh:mm:ss GMToffset (timezone name)
// e.g. Fri Jun 27 2008 00:00:00 GMT-0700 (US Mountain Standard Time)
function parseDate(s) {

  var months = {jan:0, feb:1, mar:2, apr:3, may:4, jun:5,
                jul:6, aug:7, sep:8, oct:9, nov:10, dec:11};
  var s = s.split(/[ :]/g);
  var offset = s[7];

  // Deal with offset
  var sign = offset.indexOf('-') >= 0? -1 : 1;
  var len = offset.length;
  var offMins = sign * offset.substring(len-4, len-2) * 60 + sign * offset.substring(len-2, len);
  var mins = s[4] - offMins;

  return new Date(Date.UTC(s[3], months[s[1].toLowerCase()], s[2], s[4], mins, s[6]));
}

var s = 'Fri Jun 27 2008 00:00:00 GMT-0700 (US Mountain Standard Time)';

alert(parseDate(s)); //Fri 27 Jun 2008 17:00:00 GMT+1000

然后,您可以根据需要格式化日期:

function formatDateUS(d) {
  function z(n){return (n<10? '0':'') + n}
  return z(d.getMonth()+1) + '/' + z(d.getDate()) + '/' + d.getFullYear();
}

formatDateUS(parseDate(s)); // 06/27/2008
于 2013-04-11T01:18:35.757 回答