getDate()slice()混淆

时间:2016-05-05 19:23:37

标签: javascript date slice

您好我正在尝试删除第一个日期号码。让我们说今天是5月15日,我将如何

  1. 删除第一个整数并仅保留5
  2. 请确保单个数字(6月5日前)保持不变?我尝试了切片属性,但它似乎不起作用。
  3. 我的小提琴:https://jsfiddle.net/DimitriXd4/gp2eaaot

    var now = new Date();
    var getTheDate = now.getDate().slice(-1);
    console.log(getTheDate );
    

    理论上slice(-1)应该删除最后一个数字并将其返回,即使它只是一个数字/单词,对吗?

4 个答案:

答案 0 :(得分:2)

无需使用slice()。正如Bergi所建议的那样,通过取余数10来更容易对数字进行操作。

var dateRightDigit = (new Date().getDate() % 10) + "";
console.log(dateRightDigit);  // "0" or "1" or ... or "9"

这种使用模数的简单方法更可取,因为当您对字符串进行切片时,需要考虑更多的问题。您必须知道字符串的长度,startend参数的工作方式以及负数的含义。

答案 1 :(得分:1)

试试这个:

Mark: 9
John: 4
James: 0
Mark: 6.333333
John: 3.000000
James: 0.000000

https://jsfiddle.net/gp2eaaot/3/

与结果连接的空字符串,将其转换为字符串,然后允许切片工作

答案 2 :(得分:1)

slice()是String方法,getDate()没有返回字符串,这就是为什么你不能调用getDate().slice(-1); 您必须将其转换为String,然后使用slice。 例如

var getTheDate = now.getDate().toString().slice(-1);

但它并没有改变原始日期变量,它只会给你切片。如果您想更新日期,请手动执行。

答案 3 :(得分:-1)

其他答案似乎没有考虑单个数字的数字,所以这里是一个检查切片前的日期的函数。

var sliceDate = function(dateObject){
   var dateToSlice = dateObject.getDate();
   //if the date is a two digit number
   if (dateToSlice > 9) { //NOTE we should not have to worry about the  date being negative
      dateToSlice = dateToSlice.toString().slice(-1); //change to string then slice
   }
   return Number(slicedDate); //convert back to number and return
};
console.log(sliceDate(new Date())); //will print out 5 if May 5th or 6 if May 16th

修改

这是一个更简洁的版本:

var getTheDate = new Date().getDate();
var slicedDate = (getTheDate > 9) ? Number(getTheDate.toString().slice(-1)) : getTheDate;