javascript - iOS 设备上的日期格式问题(vanilla JS)
问题描述
我目前正在使用 vanilla JavaScript 构建一个天气应用程序,并且遇到了我的格式化日期如何在我的 iPhone 上显示的问题。
这是我的代码:
dates = forecast.daily;
let conditions = "";
let minTemp = "";
let maxTemp = "";
let icon = "";
let timestamp = "";
let d = "";
let formattedDate = "";
let forecastInfoHTML = "";
dates.forEach((day) => {
conditions = day.weather[0].main;
minTemp = Math.round(day.temp.min);
maxTemp = Math.round(day.temp.max);
icon = day.weather[0].icon;
timestamp = day.dt;
d = new Date(timestamp * 1000);
formattedDate = new Intl.DateTimeFormat("en-US", {
dateStyle: "medium",
})
.format(d)
.substr(0, 6);
这就是我希望它的外观(在 Windows 和 Mac 浏览器上运行良好)-“2 月 15 日”:我希望它显示的正确方式
这就是它当前在我的 iPhone 上的显示方式 - “2/15/2”:显示不正确
JSON 数据使用 unix 编号,因此我需要能够将 unix 更改为日期。
解决方案
Intl.DateTimeFormat.dateStyle
IOS Safari 不支持...正如您在此处看到的:MDN - Intl.DateTimeFormat - 兼容性表
我建议您探索一个用于更准确地处理日期和时间的 JS 库:Moment.js
这是有关格式化日期的文档部分。您还将找到操作它所需的一切。
因此,您的日期格式将如下所示:
// I don't know what is timestamp here...
//d = moment(timestamp * 1000);
// But this is equivalent to new Date()
// It creates a moment object with the current date/time
d = moment()
// And here is how to format it
console.log(d.format("MMM D"))
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>
推荐阅读
- typescript - src/app/app.component.ts(391,9) 中的错误:错误 TS7017:元素 > 隐式具有“任何”类型,因为类型“Foo”没有索引签名
- flutter - 我想知道flutter中的NumberFormat.currency构造函数不知道如何实现请指导我
- javascript - setCustomValidity 到 Bootstrap 4 验证?
- angular - 在我的以下代码中重定向到资产页面时面临问题
- html - 如何对齐表头列和表体列的宽度?
- html - Bootstrap : Unable to center contents of entire row
- android - PreferenceManager getDefaultSharedPreferences deprecated in Android Q
- swift - SwiftUI 中的内容是什么?
- c# - MVC 5 - How to update relational table using EF code first
- vscode-remote - 从用户A切换到用户B