React原生时区和格式选项



我是React Native的新手,尝试做一些我在PHP和其他语言中做过很多次的事情是最困难的。

有很多方法可以处理时区转换和日期格式,但是,我只是运气不好,我在这上面花了太多时间。

下面是我要做的:

  1. 取来自MariaDB/MySQL格式的日期,如20121-09-11 00:22:00等,并以UTC时间存储。我把它放在一个变量中,准备在我的React应用程序中转换。
  2. 根据用户的设备时区或我可以为该用户指定的指定时区(我已经将其存储在我的DB中),将MySql日期转换为上面所示的本地时区。
  3. 取步骤2中的日期,并以各种方式格式化,如12小时格式、24小时格式、星期几版本、星期几等。

我能够在PHP中很容易地做这些事情,例如,我认为我以前在香草JS中做过类似的事情,但不记得了。在过去的两天里,我一直在这个兔子洞里,只是处理约会……请帮我下车。

我目前正在使用下面的代码,它在IOS上做我想做的事情,我以为我已经完成了,直到我在Android上测试并意识到它在Android上显示军事时间。Uggg . .

我看到过使用moment.js的建议,但是当我仔细看的时候,它基本上说它是老派的,不应该用于现代编码。

我在寻找一些现代的东西,而不是令人难以置信的复杂,我不认为我正在做的是令人难以置信的复杂。不喜欢使用库,但如果有必要,我会这样做,这样我就不必再花2天的时间来处理日期转换。

这是我现在在一个组件我为我的应用程序。我确信这是可怕的代码明智,但它的工作,除了Android。

提前感谢您的帮助。

这是我输出的东西,比如Fri 09/09/2021, 10:29 pm,当我把MySQL日期推进去时。在Android中显示相同的输出,但军事(24小时)时间。

import React from 'react';
const DateConvert = (rawDate) => {
// Convert the date into local time based on handset
const msgDateLocal = new Date(rawDate);
let msgDateDay; // Convert the numeric weekday to something more readable ZERO based
switch (msgDateLocal.getDay()) {
case 0:
msgDateDay = "Sun";
break;
case 1:
msgDateDay = "Mon";
break;
case 2:
msgDateDay = "Tue";
break;
case 3:
msgDateDay = "Wed";
break;
case 4:
msgDateDay = "Thu";
break;
case 5:
msgDateDay = "Fri";
break;
case 6:
msgDateDay = "Sat";
break
default:
msgDateDay = "Invalid day of the week";
}
// Let's do a little formatting to make it all pretty
return `${msgDateDay} ${msgDateLocal.toLocaleDateString()} ${msgDateLocal.toLocaleTimeString()}`;
};
export default DateConvert;

我能够使用这里显示的示例来解决这个问题reactnativecode.com/get-current-time-in-12-hours-am-pm-format不确定是否有更好的方法,但是,这使我能够解决我的问题,并继续进行比搞乱日期更有趣的事情……感谢您的回复和帮助。

最新更新