【发布时间】:2017-01-31 19:02:02
【问题描述】:
我的代码有什么问题?
var myDate = new Date();
var myString = "" +
( (typeof myDate !== "undefined") && ((myDate.getUTCMonth() + 1) < 10) ? "0" : "" ) +
( typeof myDate !== "undefined" ? (myDate.getUTCMonth() + 1) + myDate.getUTCDate() + myDate.getUTCFullYear().toString().substr(2,2): "" );
return myString;
为什么我的代码返回 5 位字符串,例如“03116”?是因为日期是通过引用分配的吗?
编辑:感谢您的链接。但是,如果有人知道为什么我得到一个 5 位数的字符串而不是 MMDDYY,那真的很有帮助。 A 有很多基于此代码的行,如果没有串联,重写它会很痛苦。
EDIT2:仍然想知道代码有什么问题吗?是因为引用赋值吗?
【问题讨论】:
-
好的,谢谢,我试试这个。
-
@CORY 感谢您的回答 ("0" + (date.getMonth() + 1).toString()).substr(-2) + ("0" + date.getDate() .toString()).substr(-2) + (date.getFullYear().toString()).substr(2)
-
这不是因为日期,而是因为分配给 myString 的逻辑不是你所期望的。第一部分返回字符串“0”。第二部分返回 9 月的当前月份 8,添加 1 得到 9,然后添加(对我而言)为 23 的日期,所以我得到 32。最后一部分添加 2 位数的年份作为字符串以生成“3216”然后将“0”添加到前面,结果为“03216”。对你来说,日期是 22,所以你得到“03116”。
-
@RobG 非常感谢您的回答。
标签: javascript string date concatenation variable-assignment