在Javascript中使用特定位置有条件地删除字符

问题描述 投票:0回答:2

这是我的数据格式:

 "21/03/2019 19:18"

我面临的问题是,如果我正在处理日期或时间,那么月份就会出现问题(它有03而不是3)。我正在使用名为date-fns的库。而且我也尝试过javascript日期对象的帮助,而不使用库,但没有运气,月份不应该在它前面零。

那么,如何删除“3”前面的“0”,还有一个问题是如何有条件地执行此操作,因为当它的Dec,我将获得数据为“21/12/2019 19:18”。因此,在这种情况下,我不应该删除“1”,因为它在前一个场景中位于“0”的相同位置。

换句话说,我想通过检查该位置或索引中是否有“1”来删除“0”,如果出现则删除else删除“0”

如何实现这一目标。

我尝试了下面的代码:

 const d = new Date(2019,03,21)

但是,它说遗留错误。因此,当我删除“0”前面的“0”时它工作正常。请帮忙

javascript date time
2个回答
0
投票

我假设您将数据作为字符串返回,并且您只想从第二个数字中删除前导零?

我们可以使用.split将字符串分解成部分,然后我们可以使用parseInt将一些字符串部分转换为数字。这将把字符串"03"变成数字3

function removeleadingZerosFromDateString(str) {
   //Break up the date string on the slashes and whitespace, so we have an array of all the parts
   var parts = str.split(/\/|\s/);
   console.log(parts);

   //Assign each array item to a variable so we can see what is what
   var day = parseInt(parts[0], 10);
   var month = parseInt(parts[1], 10);
   var year = parts[2];
   var time = parts[3];
   var meridian = parts[4];
 
   return day+'/'+month+'/'+year+' '+time+' '+meridian;
 }

var result = removeleadingZerosFromDateString("21/03/2019 19:18 PM");
 console.log(result);

0
投票

你说你正在使用约会,所以我会在这方面给出答案。

当前的1.x版本不支持以自定义格式解析字符串,但是它们将其添加到2.x,您可以使用alpha版本来尝试它。

语法是:

var date = parse(dateString, formatString, baseDate, [options]);

See the documentation for the parse function in version 2.0.0-alpha.27

在你的情况下,它会是这样的:

var date = parse("21/03/2019 19:18", "MM/dd/yyyy HH:mm", new Date());

最后,如果您想使用库但不想尝试使用alpha,您可以等待Date-fns 2.0成为最终版,或者您可以尝试LuxonMoment - 两者都已经具有此功能(虽然Moment使用略有不同的令牌格式"MM/DD/YYYY HH:mm")。

© www.soinside.com 2019 - 2024. All rights reserved.