Как преобразовать строку в дату в react native с помощью moment.js?

#reactjs #react-native #date #momentjs #utc

Вопрос:

У меня есть эта дата в строке, теперь я хочу преобразовать ее в UTC с помощью moment.js.

Wednesday, 22 September 2021, 7:00:00 am

Ожидаемый результат:

Formate: DD-MMM-YYYY hh:mm a

Дата: 22-Sep-2021 12:30 PM

Я пробовал этот способ, но не получилось

 let dateStr = 'Wednesday, 22 September 2021, 7:00:00 am'
utcDate = moment(moment(dateStr, 'DD-MMM-YYYY hh:mm a'))
  .utc()
  .format('DD MMM YYYY, hh:mm A');
 

Также я попробовал это преобразование, dayjs но оно хорошо работает в iOS, но не в Android, где я получаю null .

 utcDate = dayjs(new Date(`${dateStr} UTC`)).format(
  'DD MMM YYYY, hh:mm A',
);
 

дайте мне знать, если у кого-нибудь есть решение для этого.

Спасибо!

Комментарии:

1. Какой результат вы получите после format() этого ? Кстати, вам не нужно двойное построение moment , (moment(dateStr, 'DD-MMM-YYYY hh:mm a').utc() этого достаточно (это также может решить вашу проблему).

2. я попробовал, это будет сингл, и это тоже не работает, спасибо!

Ответ №1:

Попробуй это:

 let dateStr = 'Wednesday, 22 September 2021, 7:00:00 am'
const utcDate = moment(new Date(dateStr))
  .utc()
  .format('DD MMM YYYY, hh:mm A');

console.log(utcDate) 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js" integrity="sha512-qTXRIMyZIFb8iQcfjXWCO8 M5Tbc38Qi5WzdPOYZHIlZpzBHG3L3by84BBBOiRGiEb7KKtAOAs5qYdUiZiQNNQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script> 

Комментарии:

1. я попробовал это, но получил «Неверную дату» в Android и «22 сентября 2021 года, 01:30 утра» в iOS. Но фактической датой будет «22 сентября 2021 года, 12:30 вечера».

Ответ №2:

Вам нужно удалить формат из moment вызова.

Вы можете это сделать, но это устаревший способ

 let dateStr = 'Wednesday, 22 September 2021, 7:00:00 am'
// You can do this but it is deprecated way
const date = moment(dateStr)
  .utc()
  .format('DD MMM YYYY, hh:mm A');

console.log(date) 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script> 

Лучшее решение.

 let dateStr = 'Wednesday, 22 September 2021, 7:00:00 am'
const date = moment(new Date(dateStr))
  .utc()
  .format('DD MMM YYYY, hh:mm A');

console.log(date) 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script> 

Комментарии:

1. я попробовал это, но получил «Неверную дату» в Android и «22 сентября 2021 года, 01:30 утра» в iOS. Но фактической датой будет «22 сентября 2021 года, 12:30 вечера».