字符串中特定格式的Javascript日期

字符串中特定格式的Javascript日期,javascript,datetime,javascript-objects,Javascript,Datetime,Javascript Objects,如何在不将日期对象更改为字符串对象的情况下获取ddmmyyyy格式的javascript日期 我有一个字符串stringDate=31/08/2015,格式为dd/mm/yyyy 我希望获得相同格式的javascript日期对象,即dateObj=2015年8月31日,其中dateObj是dd/mm/yyyy格式的javascript日期对象 试试这个: var d = new Date("31/0/2015"); 如何将dd/mm/yyyy格式的字符串转换为javascript中的日期对象:

如何在不将日期对象更改为字符串对象的情况下获取ddmmyyyy格式的javascript日期

我有一个字符串stringDate=31/08/2015,格式为dd/mm/yyyy 我希望获得相同格式的javascript日期对象,即dateObj=2015年8月31日,其中dateObj是dd/mm/yyyy格式的javascript日期对象 试试这个:

var d = new Date("31/0/2015");

如何将dd/mm/yyyy格式的字符串转换为javascript中的日期对象:

var stringDate = "31/08/2015";

//split the string into array of date components

stringDate = stringDate.split("/");

//stringDate is now ["31", "08", "2015"]

//convert each array string value to a number, using unary plus
//and feed these values into a new date object

var dateObj = new Date(+stringDate[2], +stringDate[1] - 1, +stringDate[0]);

//note that javascript month values are 0 for Jan ... 11 for Dec, need to subtract one from the month value
以及如何从日期对象获取格式为dd/mm/yyyy的字符串:

//a date object representing 31 Aug 2015
var dateObject = new Date(2015, 7, 31);

//get the date, month and year values from the date object
var dmy = [
    dateObject.getDate(),
    dateObject.getMonth() + 1,
    dateObject.getFullYear()    
];

//convert to strings and pad with leading zero, if necessary
dmy[0] = ('0' + dmy[0]).slice(-2);
dmy[1] = ('0' + dmy[1]).slice(-2);
dmy[2] = ('0000' + dmy[2]).slice(-4);

//join values with `/` as delimiter
dmy = dmy.join('/');

//dmy is now the string "31/08/2015"
console.log(typeof dateString); //returns "string"
console.log(typeof dateObject); //returns "object"

console.log(dateObject.toString()); //returns a browser-dependent and timezone-dependent string
console.log(dateObject.valueOf()); //returns the numeric date representation

从你的问题和你对我先前答案的评论来看,你似乎在问以下问题:

如何从dd/mm/yyyy格式的字符串创建javascript日期对象,以及 当您在其他代码中检查/使用这些日期对象时,如何将它们表示为dd/mm/yyyy格式的字符串 第一个任务已经在我之前的回答中解释过了,让我们通过创建一个函数来进行转换来总结:

//create date object from string on the form "dd/mm/yyyy"

function getDateObjectFromString(dmyString){
    return new Date(
        + dmyString.slice(6,10),
        (+ dmyString.slice(3,5)) - 1,
        + dmyString.slice(0,2)
    );
}
用以下方法进行测试:

var dateString = "31/08/2015";
var dateObject = getDateObjectFromString(dateString);
如果您在控制台中检查dateObject或在代码中使用它,它将以不同于您要求的格式显示为字符串,但这是因为javascript会根据上下文自动将日期对象转换为字符串表示或数字表示,通过调用Date对象的本机toString或toValue方法

您可以轻松检查dateString和dateObject是否不同,dateObject是否确实具有日期对象的属性:

//a date object representing 31 Aug 2015
var dateObject = new Date(2015, 7, 31);

//get the date, month and year values from the date object
var dmy = [
    dateObject.getDate(),
    dateObject.getMonth() + 1,
    dateObject.getFullYear()    
];

//convert to strings and pad with leading zero, if necessary
dmy[0] = ('0' + dmy[0]).slice(-2);
dmy[1] = ('0' + dmy[1]).slice(-2);
dmy[2] = ('0000' + dmy[2]).slice(-4);

//join values with `/` as delimiter
dmy = dmy.join('/');

//dmy is now the string "31/08/2015"
console.log(typeof dateString); //returns "string"
console.log(typeof dateObject); //returns "object"

console.log(dateObject.toString()); //returns a browser-dependent and timezone-dependent string
console.log(dateObject.valueOf()); //returns the numeric date representation
第二个任务可以通过使日期对象使用自定义的.toString方法来实现:

我们将避免弄乱Date.prototype,但可以在创建日期对象时分配此custom.toString,修改getDateObjectFromString函数:

function getDateObjectFromString(dmyString){
    var dateObject = new Date(
        + dmyString.slice(6,10),
        (+ dmyString.slice(3,5)) - 1,
        + dmyString.slice(0,2)
    );
    dateObject.toString = customDateToString;
    return dateObject;
}
现在测试:

var dateString = "31/08/2015";
var dateObject = getDateObjectFromString(dateString);
console.log(dateObject); //displays "31/08/2015"

console.log(dateObject.getDay()); // displays 1 (for Monday), showing that dateObject indeed has the properties/methods of a Date object

我希望这能回答您的问题。

有一种简单的方法可以获得所需的输出

指从2020年9月7日星期一15:21:31 GMT+0530印度标准时间到2020年9月7日

假设您通过以下方式获得日期对象:

const d=新日期;//2020年9月7日星期一15:21:31 GMT+0530

通过附加函数,可以将其转换为DD-MM-YYYY格式

toLocaleDateString'en-GB'/07/09/2020

所以完整的代码是

const d=新日期; 控制台。记录“原始日期”,d const newDate=d.tolocaledate字符串'en-GB';
console.log'Modified date',newdate显示您迄今为止尝试过的一些代码?日期对象采用dd/mm/yyyy格式意味着什么?日期对象没有这样的格式。在内部,它们只是UTC纪元后的毫秒数。嗨,托马斯,我试过你的代码。。但它为我提供的日期对象不是dd/mm/yyyy格式。另外,在获得的时间戳中,一个日期被递减。嗨,詹姆斯。Javascript日期对象没有特定的输出格式sych作为dd/mm/yyyy,它们将日期存储为整数,表示自1970年UTC 1月1日以来的毫秒数,并提供简化日期算法的方法。如果您希望将日期存储为日期对象,但将其表示为dd/mm/yyyy格式的字符串,上述代码将帮助您将字符串转换为日期对象,但您需要另一个函数从日期对象获取dd/mm/yyyy格式的字符串,因为javascript没有任何本机方法。在上面的回答中,添加了从日期对象获取dd/mm/yyyy字符串表示形式所需的步骤。另外,请提供一些关于减量日期的信息。对不起。。。但是在这里,输出和输入是一样的,我的目标是有一个输入字符串的日期对象表示。如果您能提供一些您正在尝试的代码示例,那将非常有用。当我测试我的代码时,它似乎完全按照预期工作。