如何使用JavaScript将日期字符串数组转换为字符串

时间:2018-07-23 16:08:32

标签: javascript angular typescript

下面是我通过动态数据获取的JSON格式

{"range":["2018-07-23T16:03:26.861Z","2018-07-23T16:03:26.861Z"]}

以及如何将其转换为以下格式

range(20180723,20180723)

下面是我的代码:

var data:Date[] = {"range":["2018-07-23T16:03:26.861Z","2018-07-23T16:03:26.861Z"]}

  for(let i=0;i<=data.range.length;i++){
       console.log(,data.range[i]);
       }

5 个答案:

答案 0 :(得分:1)

根据我的意思,我将对此进行破解。

因此,为了使我们将字符串日期转换为格式,您希望我们可以采用多种方法。最简单的方法是使用moment.jsdate.js之类的库。这些库可以接受2018-07-23T16:03:26.861Z之类的输入,并将它们转换为Date对象。然后,您可以使用date对象获取相关值,例如;

const dateString = "2018-07-23T16:03:26.861Z";
let dateObject = moment(dateString, "YYY-MM-DDTHH:mm:ssZ").toDate();
let finalDateString = dateObject.getFullYear().toString()+dateObject.getMonth().toString()+dateObject.getDays().toString();

您可以通过他们的docs中的moment.js库详细了解如何实现此目标。

或者,您也可以在T处分割日期字符串,并替换第一个数组项中现在包含的-来实现此目的;

const dateString = "2018-07-23T16:03:26.861Z";
const outputDateString = dateString.split("T")[0].replace(/-/g,"");

如果您有兴趣,可以阅读有关String.prototype.split() here的更多信息,以及有关String.prototype.replace() here的更多信息。

这两种方法都行得通,并且可以在您已经存在的for循环中轻松实现,例如

let data = {"range":["2018-07-23T16:03:26.861Z","2018-07-23T16:03:26.861Z"]}

let output = "range("
for(let i=0;i<=data.range.length;i++){
   output += data.range[i].split("T")[0].replace(/-/g,"")+(i===0 ? "," : ")");
}
console.log(range) //"range(20180723,20180723)"

答案 1 :(得分:1)

尝试以下操作:

var obj = {"range":["2018-07-23T16:03:26.861Z","2018-07-23T16:03:26.861Z"]};
for(var k in obj){
  var str = '';
  var temp = obj[k].map(d => {
    var m = (new Date(d).getMonth()+1) <= 9? '0' + (new Date(d).getMonth()+1):''+(new Date(d).getMonth()+1);
    d = new Date(d).getFullYear().toString() + m + new Date(d).getDate();
    return d;
  });
  str = k + '(' + temp.join(',') + ')';
  console.log(str);
}

答案 2 :(得分:0)

在T上分割,使用第一部分,删除破折号。将是一种方法

答案 3 :(得分:0)

您可以通过require_once plugin_dir_path( dirname( __FILE__ ) ) . 'widgets/models/Test.php';

获得所需的字符串。

也许您想要这样的东西:

data.range[i].split("T")[0].replace(/-/g,'')

答案 4 :(得分:0)

如果我正确理解了您的要求,那么这个小片段将使用您现有的代码块来完成您的工作。您只需要使用split()将日期时间值除以T并使用replace()

替换-

var data = {"range":["2018-07-22T15:03:26.861Z","2018-07-23T16:03:26.861Z"]}
var expected =[];
for(var i=0;i<data.range.length;i++){
 expected.push(data.range[i].split('T')[0].replace(/-/g,""))
}
console.log('range('+ expected.join(',') +')');