如何在不将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格式)String stringDate = 31/08/2015
(其中dateObj是dd / mm / yyyy格式的javascript日期对象)答案 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)
根据您的问题以及您对我之前回答的评论,您似乎要求提供以下内容:
我的上一个答案已经解释了第一个任务,让我们通过编写一个函数来进行总结:
//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()
方法。
您可以轻松检查dateString
和dateObject
是否不同,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");