【问题标题】:Trying to get a MMDDYY formatted date printed within a string concatenation and failing miserably [duplicate]试图在字符串连接中打印 MMDDYY 格式的日期并且惨遭失败[重复]
【发布时间】: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


【解决方案1】:

使用NSDateFormatterDate 转换为String。例如

    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "MM dd yy"
    return dateFormatter
    let myDate = Date();
    let str = dateFormatter.string(from: myDate)

如果您合并 MMddyy,它变得不可读,请提供一个空格。

【讨论】:

  • 一个好的答案应该解释 OP 的问题以及您的代码如何解决这个问题。它也不应该依赖(甚至使用)在 OP 中没有标记或注释的库。
  • 这和 JavaScript 有什么关系?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-25
  • 2018-10-12
  • 2017-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-11
相关资源
最近更新 更多