在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”的主要内容,如果未能解决你的问题,请参考以下文章