Javascript 将任何类型的日期格式转换为MM\DD\YYYY
我正在将这两组日期转换为Javascript 将任何类型的日期格式转换为MM\DD\YYYY,javascript,date,datetime,google-apps-script,Javascript,Date,Datetime,Google Apps Script,我正在将这两组日期转换为MM\DD\YYYY 1.8月31日星期四格林尼治标准时间15:00:00+2017年8:00 2017-08-09 当我转换第一个时,我使用这个代码 var STD_Date = STD_data[i][4]; //<----This is where the date comes. var date = convertDate(STD_Date); var datearray = date.split("/"); var New_STDDate = datear
MM\DD\YYYY
1.8月31日星期四格林尼治标准时间15:00:00+2017年8:00
2017-08-09
var STD_Date = STD_data[i][4]; //<----This is where the date comes.
var date = convertDate(STD_Date);
var datearray = date.split("/");
var New_STDDate = datearray[1] + '/' + datearray[0] + '/' + datearray[2];
这是我如何格式化第二个
这就是函数
var toMmDdYy = function(input) {
var ptrn = /(\d{4})\-(\d{2})\-(\d{2})/;
if(!input || !input.match(ptrn)) {
return null;
}
return input.replace(ptrn, '$2/$3/$1');
};
这就是我使用它的方式
var startdate = form.startdate //<--- comes from HTML Picker (Format "YYYY-MM-DD")
toMmDdYy(startdate)
这是当前的代码,但期待更好的代码工作
//Time Stamp to MM\DD\YYYY
function convertDate(inputFormat) {
function pad(s) { return (s < 10) ? '0' + s : s; }
var d = new Date(inputFormat);
var chopdate = [pad(d.getDate()), pad(d.getMonth()+1), d.getFullYear()].join('/');
var datearray = chopdate.split("/");
var newdate = datearray[1] + '/' + datearray[0] + '/' + datearray[2];
return newdate;
}
//YYYY-MM-DD tp MM\DD\YYYY
var toMmDdYy = function(input) {
var ptrn = /(\d{4})\-(\d{2})\-(\d{2})/;
if(!input || !input.match(ptrn)) {
return null;
}
return input.replace(ptrn, '$2/$3/$1');
};
//Convert Date based on input to MM\DD\YYYY
function ConverSpedDate(input){
if( input.lenght > 10 ) return toMmDdYy(input);
return convertDate(input);
}
//时间戳到MM\DD\YYYY
函数转换日期(inputFormat){
功能板{返回(s<10)'0'+s:s;}
var d=新日期(输入格式);
var chopdate=[pad(d.getDate()),pad(d.getMonth()+1),d.getFullYear()].join('/');
var datearray=chopdate.split(“/”);
var newdate=datearray[1]+'/'+datearray[0]+'/'+datearray[2];
返回newdate;
}
//YYYY-MM-DD tp MM\DD\YYYY
var toMmDdYy=函数(输入){
var ptrn=/(\d{4})\-(\d{2})\-(\d{2})/;
如果(!input | |!input.match(ptrn)){
返回null;
}
返回输入。替换(ptrn,$2/$3/$1');
};
//根据输入将日期转换为MM\DD\YYYY
函数日期(输入){
如果(input.lenght>10)返回TOMMDYY(输入);
返回日期(输入);
}
这应该行得通
convertDate = function( input ){
if( input.lenght > 10 ) return convertDate( input );
return toMmDdYy( input );
}
您可以测试每个模式并相应地重新格式化。您的重新格式化功能似乎繁琐且容易出错,请考虑以下事项:
var startdate=“2017-08-23”
var timestamp=“2017年8月31日星期四15:00:00 GMT+08:00”
函数重新格式化stamp(s){
如果(/\d{4}-\d\d-\d\d/.test)){
返回一个(多个);
}如果(/[a-z]{3}[a-z]{3}\d\d\d:\d\d:\d\d\w{3}\+\d\d:\d\d\d\d{4}/i.test)){
返回reformatCustomToMDY(s);
}
}
//将YYYY-MM-DD格式重新格式化为MM\DD\YYYY
函数重新格式化{
var b=s.split(/\D/);
返回b[1]+'\'+b[2]+'\'+b[0];
}
函数reformatCustomToMDY(s){
风险值月份='1月2月3月4月6月7月8月9月10月11月',拆分('';
var b=s.分割(/);
return('0'+months.indexOf(b[1].toLowerCase()).slice(-2)+
'\'+('0'+b[2])。切片(-2)+'\'+b[5];
}
控制台日志(重新格式化TAMP(起始日期))
console.log(reformatTimestamp(timestamp))
当您将此标记为气体问题时,是否查看了Utilities.formatDate()?文档,但简而言之,它需要3个参数:日期对象、时区字符串和格式字符串。TZ&格式取自该类
在您的实例中,请尝试以下操作:
var ts = "Thu Aug 31 15:00:00 GMT+08:00 2017";
var d = new Date(ts);
Logger.log(Utilities.formatDate(d, "GMT+08:00", "MM/dd/yyyy")); // logs 08/31/2017
请注意,您必须自己在输出中设置时区。例如,您可以通过正则表达式从时间戳中提取它。由于JS Date原语是毫秒1970-01-01T00:00:00 UTC,因此可以设置输出TZ以满足您的需要
我还+1坚持ISO日期和时间格式的建议:MM/dd/yyyy缺少区域设置信息只是自找麻烦。您的意思是我将继续使用我的函数并添加此函数,以便它根据条件调用这些函数?让我试试这个thnxYes,这个唯一的问题是它无法判断“输入”是否是日期。它基于这样的假设,“输入”只有您给我们的格式。此输入“2017-08-09”(例如“2017-08-09”)中的单个空格将被视为其他格式。正确。此代码将有一个错误,因为它假设输入必须基于2示例。STD_数据[i][4]是如何生成的?您是否使用JS date方法?实际上它来自google sheet单元格,该单元格中的格式为“MM\DD\YYYY”,但当我在脚本中调用该单元格时,格式将更改为timestamp
convertDate = function( input ){
if( input.lenght > 10 ) return convertDate( input );
return toMmDdYy( input );
}
var ts = "Thu Aug 31 15:00:00 GMT+08:00 2017";
var d = new Date(ts);
Logger.log(Utilities.formatDate(d, "GMT+08:00", "MM/dd/yyyy")); // logs 08/31/2017