首页 > 解决方案 > React native toLocaleDateString 在 Android 上的行为不同

问题描述

嗨,我正在尝试在本机反应中格式化日期字符串,它适用于 iOS,但在 Android 上显示不同,我想将日期格式化为10 Aug 2018短月份名称,在 Android 上显示为10/8/18. 我正在使用.toLocaleDateString()函数来格式化日期,但它似乎不适用于 Android。

formatDateStringForDisplay = (dateString) => {

  return dateString && Date.parse(dateString)
    ? new Date(dateString).toLocaleDateString(
      'en-GB',
      {
        year: 'numeric',
        month: 'short',
        day: 'numeric'
      })
    : '';
}

此函数10 Aug 2018在 iOS 和10/8/2018Android 上返回。

我也尝试了以下方法,它仅适用于 iOS。

formatDateStringForDisplay = (dateString) => {

  if (!dateString || !Date.parse(dateString)) {
    return '';
  }

  return [
    date.getDate(),
    date.toLocaleDateString(
      'en-GB',
      {
        month: 'short'
      }
    ),
    date.getFullYear()
  ].join(' ');
}

这显示10 Aug 2018在 iOS 和10 10/8/18 2018Android 上,如何格式化日期11 Dec 2018格式?一个月的简称。

标签: javascriptreact-native

解决方案


toLocaleDateString不是获得所需格式的可靠方法。相反,请执行以下操作:

    var dateobj = new Date();
    function pad(n) {
       return n < 10 ? "0"+n : n;
    }
    var month = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul","Aug", "Sep", "Oct", "Nov", "Dec"];
    var result = pad(dateobj.getDate())+" "+ month[dateobj.getMonth()] +" "+dateobj.getFullYear();

同样根据 Mozilla 文档,格式可能会因用户的位置和计算机设置而异。

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/toLocaleDateString


推荐阅读