React Native toLocaleDateString在Android上的行为有所不同

时间:2018-08-26 14:07:08

标签: javascript react-native

嗨,我正在尝试在react native中设置日期字符串的格式,它在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'
      })
    : '';
}

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

我也尝试了以下方法,并且仅在iOS中有效。

formatDateStringForDisplay = (dateString) => {

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

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

这会在iOS上显示10 Aug 2018,在Android上显示10 10/8/18 2018,如何将日期设置为11 Dec 2018格式?有一个月的简称。

1 个答案:

答案 0 :(得分:1)

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