Конвертировать UTC или BST в часовой пояс местных пользователей в додзё - PullRequest
1 голос
/ 04 октября 2019

Я получаю поле даты как UTC или BST время, которое мне нужно преобразовать в местный часовой пояс.

Это моя функция:

exports.date = function formatDate(vpDate) {
    return vpDate ? dateUtils.toString(vpDate) : " ";
};

Этоэто то, что я возвращаю на данный момент Вот мой пример vpDate ="04-Oct-2019 13:48";

Как я могу конвертировать в местный часовой пояс в том же формате. Я попытался использовать toLocaleString и еще несколько вещей, но я не могу получить его правильно.

любая помощь будет оценена.

Вот как я использую dojo

columnConfiguration: {
            "auditDate": {
                formatter: formatters.date,
                sortable: true
            },
            "actionedBy": {
                sortable: true
            },
            "action": {
                formatter: _actionFormatter,
                sortable: true
            }
        }
    });

затем отсюда я вызываю свою вышеуказанную функцию.

Теперь это происходит правильно, но все же, но формат неправильный

Это вывод Fri Oct 04 2019 19:24:00 GMT+0530 (India Standard Time)

что не так

exports.date = function formatDate(vpDateObj) {
        var vpDate = locale.parse(dateUtils.toString(vpDateObj), {datePattern: "dd-MMM-yyyy HH:mm", selector: "date"});
        alert (vpDate);
        return vpDate ? vpDate.toString(vpDate) : " ";
    };

Ответы [ 3 ]

1 голос
/ 04 октября 2019

Вы можете использовать dojo local: format для форматирования объекта даты в ваш соответствующий формат, используя locale.format и передавая дату и объект, содержащий шаблон, который вы хотите преобразовать, используя datePattern:"yourpattern"

Смотрите ниже фрагмент, как это работает:

require(["dojo/date/locale"
], function(locale) {
  var vpDate  = new Date();
  
  var format1 = locale.format( vpDate , {selector:"date", datePattern:"ddMMyy" } );
  
  var format2 = locale.format( vpDate , {selector:"date", datePattern:"MM-dd-yyyy" } );
  
    var format3 = locale.format( vpDate , {selector:"date", datePattern:"MM / dd / yyyy ss:mm:SSS" } );
    
    
  console.log("ddMMyy -----> ", format1);
  console.log("MM-dd-yyyy -> ",format2);
  console.log("MM /dd/yyyy ss:mm:SSS -> ",format3);
  
});
<link href="//ajax.googleapis.com/ajax/libs/dojo/1.10.0/dijit/themes/claro/claro.css" rel="stylesheet" />
<script>
  dojoConfig = {
    parseOnLoad: true,
    async: true
  };
</script>
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.10.0/dojo/dojo.js"></script>
0 голосов
/ 04 октября 2019

Вы можете использовать formatDate ();функция. formatDate () показывает правильную дату и время в соответствии с часовым поясом

  function formatDate(date) {
      return date.getFullYear() + '/' + 
      (date.getMonth() + 1) + '/' + 
      date.getDate() + ' ' + 
      date.getHours() + ':' + 
      date.getMinutes();
     }


     const seoul = new Date(1489199400000);

     formatDate(seoul);  // 2017/3/11 11:30
0 голосов
/ 04 октября 2019

Dojo имеет поддержку форматирования даты, описанную здесь: https://dojotoolkit.org/reference-guide/1.10/dojo/date/locale/format.html

Строка в этом формате: 04-Oct-2019 13:48

Соответствует этой спецификации формата: dd-MMM-yyyy HH:mm

...