Expo 48中Date()输入使用问题:正常JS可用但项目内失效
Expo 48中Date()解析"YYYY/MM/DD"返回Invalid Date的解决方案
问题原因
Expo 48默认启用的Hermes JavaScript引擎对日期字符串的解析遵循更严格的ECMA-262规范,"2023/05/20"这种斜杠分隔的日期格式不属于规范定义的可自动解析格式。而Expo 47或浏览器环境的V8引擎会兼容这类非标准格式,因此出现版本间的差异。
解决方案
方法1:转换为ISO标准格式(YYYY-MM-DD)
将斜杠替换为横杠,转为Hermes可正确解析的ISO兼容格式:
const inputDate = "2023/05/20"; const isoDate = inputDate.replace(/\//g, "-"); const directDate = new Date(isoDate);
方法2:手动拆分日期参数(最可靠)
直接提取年、月、日数值传入Date构造函数(注意月份参数从0开始,需减1):
const inputDate = "2023/05/20"; const [year, month, day] = inputDate.split("/"); const directDate = new Date(year, month - 1, day);
修改后的完整示例代码
import { StyleSheet, Text, View } from "react-native"; export default function App() { const inputDate = "2023/05/20"; const [year, month, day] = inputDate.split("/"); const directDate = new Date(year, month - 1, day); return ( <View style={styles.container}> <Text>Try Date - {directDate.toDateString()}</Text> </View> ); } const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: "#fff", alignItems: "center", justifyContent: "center", }, });
内容的提问来源于stack exchange,提问作者Harshit sharma
相关产品推荐
相关产品推荐

