西邮
西邮
  • 发布:2025-03-26 20:42
  • 更新:2025-03-27 15:35
  • 阅读:49

uniapp 中picker mode=date 控件,在不同时区下的回调值异常

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win11

HBuilderX类型: 正式

HBuilderX版本号: 4.57

手机系统: Android

手机系统版本号: Android 12

手机机型: CT48

页面类型: vue

vue版本: vue3

打包方式: 离线

项目创建方式: HBuilderX

示例代码:
<template>  
  <picker  
        mode="date"  
        :value="sendDateRender"  
        :start="minDate"  
        :end="maxDate"  
        @change="deliveryConfirm">  
        <view class="picker">{{ sendDateRender }}</view>  
      </picker>  
</template>  

<script setup lang="ts">  

const sendDateRender = ref<string>(moment().format('YYYY-MM-DD'));  

const deliveryConfirm = (e: any) => {   
  sendDateRender.value =e.detail.value  

};  
</script>

操作步骤:

预期结果:

实际结果:

bug描述:

当我把安卓系统时区切换到洛杉矶时区时, 使用picker mode=date 选择任意日期,e.detail.value 回调日期总是比选择的日期少一天!!

2025-03-26 20:42 负责人:无 分享
已邀请:
DCloud_UNI_OttoJi

DCloud_UNI_OttoJi - 日常回复 uni-app/x 问题,如果艾特我没看到,请主动私信

美国时间比国内日期要晚,合理的做法是打印和存储时间戳,保证不同地区展示的绝对时间一样。你使用 Monment 时候也需要设置时区

  • DCloud_UNI_OttoJi

    具体设置方法,你搜一下 "moment js 格式化日期时候如何设置时区?"

    2025-03-27 15:36

  • 西邮 (作者)

    不要被我这个sendDateRender 的初始值误导了,哪怕我随便写个任意日期的string也不应该影响后续选择,问题重点在于,我在 picker 弹窗内选择的任意日期change回调后, e.detail.value 都会少一天,

    2025-03-27 18:49

要回复问题请先登录注册