Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将任何类型的日期格式转换为MM\DD\YYYY_Javascript_Date_Datetime_Google Apps Script - Fatal编程技术网

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