javascript - 西类牙语使用者的日期格式 - 返回 NaN 或无效日期

标签 javascript typescript date

<分区>

我有一个 Angular 应用程序

目标:我希望用户能够以西类牙语格式输入日期 (DD/MM/YYYY)。它应该以西类牙语格式显示给用户,但在将数据发送到数据库时会在后台将其转换回英语

问题:如果他们输入的前 2 位数字大于 12,则 JavaScript Date 会提示它是 NaN。

我尝试了什么:我查阅了文档并找到了方法 toLocaleDateStringtoLocaleString。但是,这是在日期上使用的。如果日期变为 NaN 那么我不知道该方法将如何工作?无论如何我都试过了,但它只是说Invalid Date{} 如果重要的话,我在中央时区。

typescript :

dateEnter(data) {
    let dateSpanish = new Date(data).toLocaleDateString;
    let dobForDB = (this.localeId == "es") ? this.myMethod(new Date(dateSpanish) : data;
}

myMethod(date: any) {
    let year = date.getFullYear();
    let day = date.getDate();
    let month = date.getMonth() + 1;
    let dateString = (this.localeId == "es") ? day.toString() + "/" + month.toString() + "/" + year.toString().substring(0, 4) : month.toString() + "/" + day.toString() + "/" + year.toString().substring(0, 4);
    return dateString;
}

最佳答案

考虑使用 Moment.js对于这种情况。它可以检测用户的区域设置。使用 L 格式说明符来处理区域设置的短日期。

moment("01/02/2019", "L").format("YYYY-MM-DD")

// Output in en-US:  "2019-01-02"  (January 2nd)
// Output in es-MX:  "2019-02-01"  (February 1st)

请记住,决定格式的不仅仅是语言。有许多使用 DD/MM/YYYY 格式的英语语言环境。英国就是一个例子。主要是美国 (en-US) 使用 MM/DD/YYYY。见Date Format by Country on Wikipedia .

关于javascript - 西类牙语使用者的日期格式 - 返回 NaN 或无效日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59000132/

相关文章:

javascript - 用于网络/移动应用程序的 HTML5 API javascript 库和 CSS 工具

javascript - 类型错误 : boolean is not a function

typescript - 在TypeScript中包装react-redux的connect函数导致编译错误

JavaScript 验证日期是否存在

javascript - 如何将字符串 2010-1-10 转换为 javascript 中的日期对象?

javascript - 使用 False 打破 JavaScript 'For' 循环?

javascript - 如何在单个网页中拥有多个 Angular 应用程序?

Angular2 Observable 绑定(bind)不正确

javascript - 如何为模块编写 Typescript 类定义

git - 如何 "toggle"git-log的日期格式?如何在同一个 git 日志中同时显示相对日期和绝对日期?