返回

new Date("yyyy-MM-dd HH:mm:ss") 在iOS返回Null, 安卓正常?怪异日期格式惹的祸!

前端

JavaScript 中的 new Date() 方法

JavaScript 中的 new Date() 方法用于创建日期对象。它接受一个字符串参数,该参数指定要创建的日期。这个字符串可以采用多种格式,包括:

  • "yyyy-MM-dd"
  • "yyyy/MM/dd"
  • "dd/MM/yyyy"
  • "MM/dd/yyyy"
  • "yyyyMMdd"
  • "ddMMyyyy"
  • "MM/dd/yy"
  • "dd/MM/yy"
  • "yy/MM/dd"

iOS 与 Android 的差异

在 iOS 上,new Date() 方法只支持一种日期格式,即 "yyyy/MM/dd HH:mm:ss"。这意味着,如果您使用其他格式的日期字符串作为参数,该方法将返回 null。

在 Android 上,new Date() 方法支持两种日期格式,即 "yyyy-MM-dd HH:mm:ss" 和 "yyyy/MM/dd HH:mm:ss"。这意味着,无论您使用哪种格式的日期字符串作为参数,该方法都将返回一个有效的日期对象。

兼容性问题

这种差异可能会导致跨平台应用程序在 iOS 上出现问题。例如,如果您在应用程序中使用 new Date() 方法来解析用户输入的日期,并且用户在 iOS 设备上输入了 "yyyy-MM-dd HH:mm:ss" 格式的日期,则该方法将返回 null。这可能会导致应用程序出现异常或故障。

解决方案

为了确保您的应用程序在所有平台上都能正常运行,您应该始终使用 "yyyy/MM/dd HH:mm:ss" 格式的日期字符串作为 new Date() 方法的参数。如果您需要支持其他格式的日期字符串,则可以编写一个函数来将这些字符串转换为 "yyyy/MM/dd HH:mm:ss" 格式。

总结

JavaScript 中的 new Date() 方法在 iOS 和 Android 上的行为不同。在 iOS 上,该方法只支持一种日期格式,即 "yyyy/MM/dd HH:mm:ss"。在 Android 上,该方法支持两种日期格式,即 "yyyy-MM-dd HH:mm:ss" 和 "yyyy/MM/dd HH:mm:ss"。这种差异可能会导致跨平台应用程序在 iOS 上出现问题。为了确保您的应用程序在所有平台上都能正常运行,您应该始终使用 "yyyy/MM/dd HH:mm:ss" 格式的日期字符串作为 new Date() 方法的参数。***