javascript - 西班牙语使用者的日期格式 - 返回 NaN 或无效日期
问题描述
我有一个 Angular 应用程序
目标:我希望用户能够以西班牙语格式输入日期(DD/MM/YYYY)。它应该以西班牙语格式显示给用户,但在将数据发送到数据库时将其转换回英语
问题:如果他们输入的前 2 位数字大于 12,那么 JavaScript Date 会抱怨它是 NaN。
我尝试了什么:我查找了文档并找到了方法toLocaleDateString
和toLocaleString
. 但是,这用于日期。如果日期变为NaN,那么我看不出该方法将如何工作?无论如何我都试过了,但它只是说Invalid Date {}
如果重要的话,我在中央时区。
打字稿:
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
. 请参阅Wikipedia 上按国家/地区划分的日期格式。
推荐阅读
- azure - 安装 Azure 特定 PowerShell 模块以写入 Azure 表的问题
- html - 如何使屏幕阅读器正确发音 C#
- python - Pipeline 在 Bash 中似乎没有任何作用
- angular - 等待 RxJS 调度解决
- node.js - 如何将 REST API 的 String 数据类型的请求正文转换为 Node JS 中的 JSON 对象并在 Postman 中进行测试?
- dataframe - 使用 Dataframes 在 Spark 中处理数据差异(Deltas)
- python - 消息比较返回 false
- javascript - 处理选择所有复选框 - ReactJS
- pandas - 在 Seaborn 线图 (sns) 上注释标记值
- angular - 反应形式 combineLatest 对象可能为 null 或未定义