在javascript中将日期从“Thu Jun 09 2011 00:00:00 GMT+0530(印度标准时间)”转换为“YYYY-MM-DD”

Posted

技术标签:

【中文标题】在javascript中将日期从“Thu Jun 09 2011 00:00:00 GMT+0530(印度标准时间)”转换为“YYYY-MM-DD”【英文标题】:Convert date from 'Thu Jun 09 2011 00:00:00 GMT+0530 (India Standard Time)' to 'YYYY-MM-DD' in javascript 【发布时间】:2011-06-09 10:14:09 【问题描述】:

如何将时间从格式“Thu Jun 09 2011 00:00:00 GMT+0530(印度标准时间)”转换为 YYYY-MM-DD。

当我尝试 alert() 日期时,这将显示如下日期 - 2011 年 6 月 9 日星期四 00:00:00 GMT+0530(印度标准时间)

但我需要 YYYY-MM-DD 格式的时间。

有没有内置函数可以转换?

【问题讨论】:

你是怎么知道日期的? YYYY-MM-DD 在 IST 中?在当地时间?在UTC? 不清楚你在问什么。您希望输出为 UTC 吗? 【参考方案1】:

您可以使用Date 构造函数解析日期,然后吐出各个时间分量:

function convert(str) 
  var date = new Date(str),
    mnth = ("0" + (date.getMonth() + 1)).slice(-2),
    day = ("0" + date.getDate()).slice(-2);
  return [date.getFullYear(), mnth, day].join("-");


console.log(convert("Thu Jun 09 2011 00:00:00 GMT+0530 (India Standard Time)"))
//-> "2011-06-08"

从结果中可以看出,这会将日期解析为本地时区。如果要根据原始时区保留日期,最简单的方法是拆分字符串并提取您需要的部分:

function convert(str) 
  var mnths = 
      Jan: "01",
      Feb: "02",
      Mar: "03",
      Apr: "04",
      May: "05",
      Jun: "06",
      Jul: "07",
      Aug: "08",
      Sep: "09",
      Oct: "10",
      Nov: "11",
      Dec: "12"
    ,
    date = str.split(" ");

  return [date[3], mnths[date[1]], date[2]].join("-");


console.log(convert("Thu Jun 09 2011 00:00:00 GMT+0530 (India Standard Time)"))
//-> "2011-06-09"

【讨论】:

嗨,我如何将“Thu Jun 09 2011 10:12:00 GMT+0530(印度标准时间)”转换为日期和时间(mm/dd/yyy ss:mm:hh) 嘿,谢谢,但我在控制台中收到“TypeError: str.split is not a function”这个错误,在我的情况下它不起作用 我想要这种格式 MM/DD/YYYY HH:mm -> 2018-11-22 19:00 你能帮帮我吗 我刚刚得到 -- 在控制台窗口中 嗨,我想要这种形式的“MMM D,YYY”(2020 年 9 月 9 日),我得到这种形式的 MMM-D-YYY(2020 年 9 月 9 日)我该怎么做我正在使用这个代码函数 convert(str) date = str.split(" ");返回 [ 日期[1], 日期[2], 日期[3] ].join(" "); console.log(convert("Thu Jun 09 2011 00:00:00 GMT+0530 (India Standard Time)"))【参考方案2】:

对我来说,转换日期最简单的方法是对其进行字符串化,然后对其进行切片。

var event = new Date("Fri Apr 05 2019 16:59:00 GMT-0700 (Pacific Daylight Time)");

let date = JSON.stringify(event)
date = date.slice(1,11)

// console.log(date) = '2019-04-05'

【讨论】:

【参考方案3】:
function convert(str) 
    var date = new Date(str),
        mnth = ("0" + (date.getMonth()+1)).slice(-2),
        day  = ("0" + date.getDate()).slice(-2);
        hours  = ("0" + date.getHours()).slice(-2);
        minutes = ("0" + date.getMinutes()).slice(-2);
    return [ date.getFullYear(), mnth, day, hours, minutes ].join("-");

我在 Angular 中有效地使用了这个,因为我在更新 $scope.STARTevent 和 $scope.ENDevent 时浪费了两个小时,在 console.log 中很好,但是保存到 mysql 减少了两个小时。

var whatSTART = $scope.STARTevent;
whatSTART = convert(whatever);

这也适用于 END

【讨论】:

【参考方案4】:

上述解决方案仅在其为 字符串 时才有效。输入类型日期,在某些情况下,如您使用 angular 左右,会在 javascript date object 中为您提供输出。这就是为什么有些人会收到“TypeError:str.split 不是函数”之类的错误。它是一个日期对象,所以你应该在javascript中使用日期对象的函数来操作它。 此处示例:

var date = $scope.dateObj ; 
//dateObj is data bind to the ng-modal of input type dat.
console.log(date.getFullYear()); //this will give you full year eg : 1990
console.log(date.getDate()); //gives you the date from 1 to 31
console.log(date.getMonth() + 1); //getMonth will give month from 0 to 11 

查看以下链接以供参考:

【讨论】:

这是正确的方法。泰。如果仍然有人收到错误,请在月份中添加 0。例如:('0'+date.getMonth()).slice(-2)【参考方案5】:
 function convertDatePickerTimeToMySQLTime(str) 
        var month, day, year, hours, minutes, seconds;
        var date = new Date(str),
            month = ("0" + (date.getMonth() + 1)).slice(-2),
            day = ("0" + date.getDate()).slice(-2);
        hours = ("0" + date.getHours()).slice(-2);
        minutes = ("0" + date.getMinutes()).slice(-2);
        seconds = ("0" + date.getSeconds()).slice(-2);

        var mySQLDate = [date.getFullYear(), month, day].join("-");
        var mySQLTime = [hours, minutes, seconds].join(":");
        return [mySQLDate, mySQLTime].join(" ");
    

【讨论】:

【参考方案6】:

var first_date = new Date("Thu Jun 09 2011 00:00:00 GMT+0530 (India Standard Time)"); var start_date = first_date.toLocaleDateString().slice(0,10);

【讨论】:

以上是关于在javascript中将日期从“Thu Jun 09 2011 00:00:00 GMT+0530(印度标准时间)”转换为“YYYY-MM-DD”的主要内容,如果未能解决你的问题,请参考以下文章

在javascript中将时间添加到日期对象

如何在 JavaScript 中将公历日期更改为波斯日期?

在 JavaScript 中将字符串解析为日期

如何在javascript中将当前日期时间与另一个日期时间进行比较

在javascript中将iso日期转换为毫秒

如何在Javascript中将日期转换为其他时区[重复]