【问题标题】:Issue with date format on iOS devices (vanilla JS)iOS 设备上的日期格式问题(vanilla JS)
【发布时间】:2021-02-14 23:14:40
【问题描述】:

我目前正在使用原生 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 日”:Correct way I want this displayed

这是它当前在我的 iPhone 上的显示方式 - '2/15/2':Incorrect display

JSON 数据使用 unix 编号,因此我需要能够将 unix 更改为日期。

【问题讨论】:

  • 您的d 变量在两个平台上显示的值是否相同?如果是,则可能是两个平台上的 Intl lib 不同。
  • @Mellet - 我不确定如何在我的 iPhone 上检查 b 变量的值?
  • 你用的是什么框架?应该只是在有一些调试工具的同时做一个 console.log。
  • @Mellet 我没有使用任何框架 - 纯粹的香草 JS
  • DateTimeFormat 生成的格式取决于实现。如果您想要一致的格式,请自行或使用库。

标签: javascript json api datetime


【解决方案1】:

Intl.DateTimeFormat.dateStyle 不受 IOS Safari 支持...如您在此处看到的:MDN - Intl.DateTimeFormat - Compatibility table

我建议你探索一个可以更准确地处理日期和时间的 JS 库:Moment.js

这是关于格式化日期的documentation 部分。您还将找到操作它所需的一切。

所以你的日期格式应该是这样的:

// 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>

【讨论】:

    【解决方案2】:

    试试这个:

    const date = new Date();
    const month = date.toLocaleString("en-US", { month: 'short' });
    const dateNum = date.getDate();
    const prettyDate = `${month} ${dateNum}`;
    console.log(prettyDate);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-08
      • 1970-01-01
      • 1970-01-01
      • 2019-05-08
      • 1970-01-01
      • 2016-06-07
      相关资源
      最近更新 更多