收藏
回答

Android 下JS部分 Date.toLocaleString() 无效

框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
小程序 Bug Date.toLocaleString() 客户端 Android 6.6.6 2.0.9

代码非常短,代码片段已经提供。


js

const app = getApp()
Page({
  data: {
    datedisplay:"",
  },
  onLoad: function () {
    let d = new Date()
    this.setData({date:d})
    this.setData({datedisplay:d.toLocaleString()})
  },
})


wxml

<wxs module="util">
  function toLocal(time) {
    d = getDate(time)
    if (d == "Invalid Date") return ""
    return d.toLocaleString()
  }
  module.exports.toLocal = toLocal
</wxs>
 
<view class="intro"><text>
JS toLocaleString:
{{datedisplay}}
</text>
</view>
 
<view class="intro">
<text>
WXS toLocaleString:
{{util.toLocal(date)}}
</text></view>


做的事情也非常简单,对比js部分的Date.toLocaleString() 和wxs部分Date.toLocaleString()


安卓下截图:


iOS截图



BUG显而易见。很显然在安卓里,js框架内的Date对象toLocaleString()被简单地作为toString()处理了,其他toLocaleTimeString(), toLocaleDateString()都存在问题。这个问题非常久了,希望赶紧处理。这都是小程序框架基础函数级别的服务,有这种问题那么久没发现也是一个奇迹。



回答关注问题邀请回答
收藏

27 个回答

  • 赤琦
    赤琦
    2020-05-12

    都2020年了,异教徒毫无动静

    2020-05-12
    有用 4
    回复
  • 2019-05-17

    一年过去了……一人血书求修复

    2019-05-17
    有用 3
    回复
  • 贵棠
    贵棠
    2018-09-07

    同问。在安卓8.0.0版本上 date.toLocalString() 同样不好使

    https://www.jianshu.com/p/90220a55f542

    这里附一个帖子,是有热心网友在测试IOS和安卓部分版本下

    JS系统函数的一些 支持/不支持的情况。

    希望官方能快速解决这个问题。

    2018-09-07
    有用 3
    回复
  • 低头思
    低头思
    2021-07-15

    2021年了 还是这个问题 我又找来了

    2021-07-15
    有用 1
    回复
  • 阿高
    阿高
    05-21

    2024年5月21日,还没解决

    05-21
    有用
    回复
  • 大胡子怪蜀黍
    大胡子怪蜀黍
    03-14

    2024年了,可能根本没考虑解决

    03-14
    有用
    回复
  • 小乾
    小乾
    2023-11-06

    2023/11/6 问题依旧如此 “官方人员:嘿嘿嘿,老子就不改,你们要用我的东西就得学会适应我【滑稽】”

    2023-11-06
    有用
    回复
  • 布
    2023-08-18

    2023年了还不解决



    2023-08-18
    有用
    回复
  • Moonbeam Monkey
    Moonbeam Monkey
    2023-06-08


    写了一下两个 函数 ,可以解决这个问题 效果图如上

    下面这个是处理日期部分 :年月日

     function getYearMonthDay(date) {
      if (!date) {
        var myDate = new Date();
      } else {
        var myDate = new Date(date);
      }
      let Y = myDate.getFullYear() + "-";
      let M =
        myDate.getMonth() + 1 < 10
          ? "0" + (myDate.getMonth() + 1) + "-"
          : myDate.getMonth() + 1 + "-";
      let D = myDate.getDate() < 10 ? "0" + myDate.getDate() : myDate.getDate();
      let YearMonthDay = Y + M + D;
    
    
      return YearMonthDay;
    }
    


    下面这个是具体的时间 :时分秒

    function getTime(date) {
      if (!date) {
        var d = new Date();
      } else {
        var d = new Date(date);
      }
    
    
      let hours = d.getHours() < 10 ? "0" + d.getHours() : d.getHours();
      let minutes = d.getMinutes() < 10 ? "0" + d.getMinutes() : d.getMinutes();
      let seconds = d.getSeconds() < 10 ? "0" + d.getSeconds() : d.getSeconds();
      let timeNow = hours + ":" + minutes + ":" + seconds;
    
    
      return timeNow;
    }
    
    


    使用方法:


    getYearMonthDay(date) + " " + getTime(date);
    
    date 是你要处理的日期时间 变量
    
    最后的结果 就是 日期和时间的拼接,效果如最上面的图所示
    
    
    2023-06-08
    有用
    回复
  • 小小的人
    小小的人
    2023-05-27

    2023.5.26 问题依旧没解决

    2023-05-27
    有用
    回复

正在加载...

登录 后发表内容