来自字符串的特定格式的Javascript日期

时间:2016-08-21 08:04:21

标签: javascript datetime javascript-objects

如何在不将Date对象更改为String对象的情况下以ddmmyyyy格式获取javascript日期?

  • 我有一个<item id="6829556334057807840"> <row> <key>Drilling Required</key> <value>No</value> </row> <row> <key>Install Time</key> <value>30 Minutes</value> </row> <row> <key>Fascia Trimming</key> <value>Yes (minor)</value> </row> <row> <key>Visibility</key> <value>Exposed</value> </row> </item> (以dd / mm / yyyy格式)
  • 我想以相同的格式获取javascript Date对象,即String stringDate = 31/08/2015(其中dateObj是dd / mm / yyyy格式的javascript日期对象)

4 个答案:

答案 0 :(得分:0)

如何在表单上转换字符串&#34; dd / mm / yyyy&#34;到javascript中的日期对象:

=ADMIN=> D:\bat\SO\39034430.bat
"D:\odds and ends\tempx\links\testDJ\LocUsers.vbs","mypc\user","25.12.2014 00:13"
"D:\tempWin\ActivityLog.xsl","NT AUTHORITY\SYSTEM","24.02.2016 13:12"
"D:\tempWin\CompatTelemetryLogs\diagerr.xml","NT AUTHORITY\SYSTEM","12.08.2015 03:17"
"D:\tempWin\CompatTelemetryLogs\diagwrn.xml","NT AUTHORITY\SYSTEM","12.08.2015 03:17"
"D:\test\check_acl.csv","BUILTIN\Administrators","06.03.2016 14:28"

如何在表单上获取字符串&#34; dd / mm / yyyy&#34;来自日期对象:

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

答案 1 :(得分:0)

根据您的问题以及您对我之前回答的评论,您似乎要求提供以下内容:

  1. 如何从表单上的字符串创建javascript日期对象&#34; dd / mm / yyyy&#34;和
  2. 如何使这些Date对象在表单上表示为字符串&#34; dd / mm / yyyy&#34;当您在其他代码中检查/使用它们时
  3. 我的上一个答案已经解释了第一个任务,让我们通过编写一个函数来进行总结:

    //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对象转换为字符串表示形式(或数字表示),取决于上下文,通过调用Date对象的本地toString()toValue()方法。

    您可以轻松检查dateStringdateObject是否不同,dateObject确实具有Date对象的属性:

    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
    

    第二个任务可以通过使Date对象使用自定义.toString()方法来实现:

    //custom method to get "dd/mm/yyyy" when called on a Date object
    function customDateToString(){
        return [
            ('0' + this.getDate()).slice(-2),
            ('0' + (this.getMonth() + 1)).slice(-2),
            ('0000' + this.getFullYear()).slice(-4)
        ].join("/");
    }
    

    我们将避免弄乱Date.prototype,但可以在创建日期对象时修改此自定义.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
    

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

答案 2 :(得分:0)

有一种获取所需输出的简单方法。

表示从“ 2020年9月7日星期一15:21:31 GMT + 0530(印度标准时间)”到“ 2020年9月9日”。

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

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

您可以通过附加功能将其转换为 DD-MM-YYYY 格式

toLocaleDateString('en-GB') // 2020年9月9日

因此完整代码将是

const d = new Date();
console.log('Original date', d)
const newDate = d.toLocaleDateString('en-GB');
console.log('Modified date', newDate)

答案 3 :(得分:-1)

试试这个:

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