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 是否从JS日期对象获取YYYYMMDD格式的字符串?_Javascript_Date_Date Formatting - Fatal编程技术网

Javascript 是否从JS日期对象获取YYYYMMDD格式的字符串?

Javascript 是否从JS日期对象获取YYYYMMDD格式的字符串?,javascript,date,date-formatting,Javascript,Date,Date Formatting,我试图使用JS将date对象转换为YYYYMMDD格式的字符串。有没有比连接Date.getYear()、Date.getMonth()和Date.getDay()更简单的方法呢?这里的这个家伙=>为Javascript的Date对象编写了一个格式()函数,因此可以与熟悉的文本格式一起使用 如果您需要在应用程序的Javascript中使用功能齐全的日期格式,请使用它。否则,如果您想做的是一次性的,那么连接getYear()、getMonth()、getDay()可能最简单。mootools似乎提

我试图使用JS将
date对象
转换为
YYYYMMDD
格式的字符串。有没有比连接
Date.getYear()
Date.getMonth()
Date.getDay()
更简单的方法呢?

这里的这个家伙=>为Javascript的
Date
对象编写了一个
格式()
函数,因此可以与熟悉的文本格式一起使用


如果您需要在应用程序的Javascript中使用功能齐全的日期格式,请使用它。否则,如果您想做的是一次性的,那么连接getYear()、getMonth()、getDay()可能最简单。

mootools似乎提供了
Date().format()


不过,我不确定是否值得仅为这项特定任务包含它。

修改了我经常使用的一段代码:

Date.prototype.yyyymmdd = function() {
  var mm = this.getMonth() + 1; // getMonth() is zero-based
  var dd = this.getDate();

  return [this.getFullYear(),
          (mm>9 ? '' : '0') + mm,
          (dd>9 ? '' : '0') + dd
         ].join('');
};

var date = new Date();
date.yyyymmdd();

我不喜欢添加到原型中。另一种选择是:

var rightNow=新日期();
var res=rightNow.toISOString().slice(0,10).replace(/-/g,”);

document.body.innerHTML+=res如果您不需要纯JS解决方案,您可以使用jQuery UI完成以下工作:

$.datepicker.formatDate('yymmdd', new Date());
我通常不喜欢导入太多的库。但是jQueryUI非常有用,您可能会在项目的其他地方使用它


如果您不介意添加一个附加的(但很小的)库,请访问以获取更多示例,它为使用JavaScript提供了许多很好的功能。 要设置日期格式,请使用以下功能:

new Date().format("{yyyy}{MM}{dd}")

我不喜欢修改本机对象,而且我认为乘法比填充接受的解决方案的字符串更清晰

函数yyyymmdd(dateIn){ var yyyy=dateIn.getFullYear(); var mm=dateIn.getMonth()+1;//getMonth()是基于零的 var dd=dateIn.getDate(); 返回字符串(10000*yyy+100*mm+dd);//mm和dd的前导零 } var today=新日期(); console.log(yyyymmdd(今天))普通JS(ES5)解决方案,无任何可能的日期跳转问题,这是由UTC中的date.toISOString()打印引起的:

var now = new Date();
var todayUTC = new Date(Date.UTC(now.getFullYear(), now.getMonth(), now.getDate()));
return todayUTC.toISOString().slice(0, 10).replace(/-/g, '');

这是对@weberste对@Pierre Guilbert答案的评论的回应。

您可以使用
toISOString
函数:

var today = new Date();
today.toISOString().substring(0, 10);
它将为您提供“yyyy-mm-dd”格式。

var someDate=新日期();
var dateformatted=someDate.toISOString().substr(0,10);

console.log(日期格式化)除了o-o的答案之外,我建议将逻辑操作与返回分开,并将它们作为三元组放在变量中

另外,使用
concat()
确保变量的安全连接

Date.prototype.yyyymmdd=function(){
var yyyy=this.getFullYear();
var mm=this.getMonth()<9?“0”+(this.getMonth()+1):(this.getMonth()+1);//getMonth()是基于零的
var dd=this.getDate()<10?“0”+this.getDate():this.getDate();
返回“.concat(yyyy).concat(mm).concat(dd);
};
Date.prototype.yyyymmddhhmm=函数(){
var yyyymmdd=this.yyyymmdd();
var hh=this.getHours()<10?“0”+this.getHours():this.getHours();
var min=this.getMinutes()<10?“0”+this.getMinutes():this.getMinutes();
返回“.concat(yyyymmdd).concat(hh).concat(min);
};
Date.prototype.yyyymmddhhmmss=函数(){
var yyyymmddhhmm=this.yyyymmddhhmm();
var ss=this.getSeconds()<10?“0”+this.getSeconds():this.getSeconds();
返回“.concat(yyyymmddhhmm).concat(ss);
};
var d=新日期();
document.getElementById(“a”).innerHTML=d.yyyymmdd();
document.getElementById(“b”).innerHTML=d.yyyymmddhhmm();
document.getElementById(“c”).innerHTML=d.yyyymmddhhmmss()

yyyymmdd:
yyyymmddhhmm:
YYYYMMDDHMMSS:

根据@o-o的答案,这将根据格式字符串返回日期字符串。您可以轻松地为年份添加一个2位数的年份正则表达式&毫秒等,如果需要的话

Date.prototype.getFromFormat = function(format) {
    var yyyy = this.getFullYear().toString();
    format = format.replace(/yyyy/g, yyyy)
    var mm = (this.getMonth()+1).toString(); 
    format = format.replace(/mm/g, (mm[1]?mm:"0"+mm[0]));
    var dd  = this.getDate().toString();
    format = format.replace(/dd/g, (dd[1]?dd:"0"+dd[0]));
    var hh = this.getHours().toString();
    format = format.replace(/hh/g, (hh[1]?hh:"0"+hh[0]));
    var ii = this.getMinutes().toString();
    format = format.replace(/ii/g, (ii[1]?ii:"0"+ii[0]));
    var ss  = this.getSeconds().toString();
    format = format.replace(/ss/g, (ss[1]?ss:"0"+ss[0]));
    return format;
};

d = new Date();
var date = d.getFromFormat('yyyy-mm-dd hh:ii:ss');
alert(date);
我不知道它的效率有多高,尤其是性能方面,因为它使用了很多正则表达式。它可能需要一些我不精通纯js的工作

注意:我保留了预定义的类定义,但您可能希望按照最佳实践将其放入函数或自定义类中。

//UTC/GMT 0
document.write('UTC/GMT 0:'+(new Date()).toISOString().slice(0,19)。替换(/[^0-9]/g,”);//20150812013509
//客户端本地时间
document.write(“
本地时间:”+(新日期(Date.now()-(new Date()).getTimezoneOffset()*60000)).toISOString().slice(0,19)。替换(/[^0-9]/g,”);//20150812113509可能是你的朋友
当我需要这样做时,我通常使用下面的代码

var date = new Date($.now());
var dateString = (date.getFullYear() + '-'
    + ('0' + (date.getMonth() + 1)).slice(-2)
    + '-' + ('0' + (date.getDate())).slice(-2));
console.log(dateString); //Will print "2015-09-18" when this comment was written
为了进行解释,.slice(-2)给出了字符串的最后两个字符

因此,不管怎样,我们都可以在日或月上加上“0”,然后只要求最后两个,因为这两个总是我们想要的

因此,如果MyDate.getMonth()返回9,则为:

("0" + "9") // Giving us "09"
("0" + "10") // Giving us "010"
因此,在上面添加.slice(-2)可以得到最后两个字符,即:

("0" + "9").slice(-2)

"09"
但是如果date.getMonth()返回10,则它将是:

("0" + "9") // Giving us "09"
("0" + "10") // Giving us "010"
因此,添加.slice(-2)将给出最后两个字符,或者:

("0" + "10").slice(-2)

"10"

这是一行代码,可用于创建今天日期的
YYYY-MM-DD
字符串

var d = new Date().toISOString().slice(0,10);
这是一个非常有用的软件包

如何使用:

从NPM下载并安装
dateformat
。在您的模块中需要它:

const dateFormat=require('dateFormat')

然后格式化你的东西:


const myyyyymmddate=dateformat(新日期(),'yyyy-mm-dd')

此线程中最流行答案的简化版:

新日期('2016年6月5日')。
toLocaleString('en-us',{年:'数字',月:'2位',日:'2位'})。
替换(/(\d+)\/(\d+)\/(\d+)/,“$3-$1-$2”);
// => '2016-06-05'

此代码与Pierre Guillbert的答案一致:

(即使在10000年后仍然有效)

另一种方法是与具有以下名称的区域设置一起使用,例如瑞典、立陶宛、匈牙利、韩国等:

date.toLocaleDateString('se')
date.toLocaleDateString('se')
var date = new Date().getFullYear() + "-" + (parseInt(new Date().getMonth()) + 1) + "-" + new Date().getDate();
var formattedDate = $filter('date')(myDate, 'yyyyMMdd')
function getDateInYYYYMMDD() {
    let currentDate = new Date();

    // year
    let yyyy = '' + currentDate.getFullYear();

    // month
    let mm = ('0' + (currentDate.getMonth() + 1));  // prepend 0 // +1 is because Jan is 0
    mm = mm.substr(mm.length - 2);                  // take last 2 chars

    // day
    let dd = ('0' + currentDate.getDate());         // prepend 0
    dd = dd.substr(dd.length - 2);                  // take last 2 chars

    return yyyy + "" + mm + "" + dd;
}

var currentDateYYYYMMDD = getDateInYYYYMMDD();
console.log('currentDateYYYYMMDD: ' + currentDateYYYYMMDD);
Date.prototype.yyyymmdd = function() {
    return [
        this.getFullYear(),
        (this.getMonth()+1).toString().padStart(2, '0'), // getMonth() is zero-based
        this.getDate().toString().padStart(2, '0')
    ].join('-');
};
[day,,month,,year]= Intl.DateTimeFormat(undefined, { year: 'numeric', month: '2-digit', day: '2-digit' }).formatToParts(new Date()),year.value+month.value+day.value
new Date().toJSON().slice(0,10).replace(/\/|-/g,'')
var now = new Date();
var todayString = `${now.getFullYear()}-${now.getMonth()}-${now.getDate()}`;
var date = new Date();
date = date.toJSON().slice(0, 10);
var date = new Date().toISOString();
date = date.substring(0, 10);
var date = new Date();
date = date.toJSON().slice(0, 10).split`-`.join``;
.toJSON().slice(0,10).split`-`.join``;