1
votes

Convertir UTC ou BST en fuseau horaire des utilisateurs locaux dans le dojo

Je reçois mon champ de date au format UTC ou BST que je dois convertir dans mon fuseau horaire local.

Voici ma fonction: p >

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) : " ";
    };

Voici ce que je retourne dès maintenant Voici mon exemple vpDate = "04-Oct-2019 13:48";

Comment puis-je convertir le fuseau horaire local dans le même format. J'ai essayé d'utiliser toLocaleString et quelques autres choses mais je ne suis pas en mesure de l'obtenir correctement.

toute aide serait appréciée.

Voici comment j'utilise dojo

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

puis à partir de là, j'appelle ma fonction ci-dessus.

Maintenant, cela vient correct mais toujours mais le format est incorrect

Voici la sortie Fri Oct 04 2019 19:24:00 GMT + 0530 (India Standard Time)

qui est erronée

XXX


2 commentaires

"dans le même format" que quoi? En supposant que vpDate est un objet JavaScript standard Date , il n’a pas de format intrinsèque lié à la manière dont la date a été initialement acquise.


@kshetline a ajouté simpledateformat ..Merci


3 Réponses :


0
votes

Dojo prend en charge le formatage de la date, décrit ici: https: //dojotoolkit.org/reference-guide/1.10/dojo/date/locale/format.html

Une chaîne au format suivant: 04-oct-2019 13:48

Correspond à cette spécification de format: jj-MMM-aaaa HH: mm


2 commentaires

Je n'ai pas eu la solution. Dois-je écrire une fonction distincte? Je suis très nouveau dans le dojo, je pourrais donc poser une question très basique


Je ne connais pas du tout Dojo, je viens de le chercher maintenant. :) Mais il semble que ce soit juste une question d'utiliser une méthode de formatage Dojo existante, qui prend votre date et un objet contenant des options (dont l'une peut être le format de la date).



1
votes

Vous pouvez utiliser dojo local: format fonction pour formater un objet de date dans votre format correspondant, en utilisant locale.format et en passant la date et l'objet contenant le motif que vous souhaitez convertir en utilisant datePattern:"yourpattern"

Voir ci-dessous l'extrait de code comment cela fonctionne :

<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>
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);
  
});


16 commentaires

Cela me semble bien mais comme je suis très nouveau dans le dojo ... Y a-t-il un moyen de m'adapter à ma fonction


Je reçois tout comme nul .. Je ne sais pas comment appeler cette fonction


pourriez-vous poster comment vous utilisez le dojo? et souhaitez une version? poster juste en-tête comment vous importez et votre fonction


Je viens de publier un morceau de code d'où j'appelle la fonction de date dans le formateur


@ c'est juste une config pour une table je suppose! , quelle version utilisez-vous?


1.15 je me sens .. je ne peux pas dire exactement avec le pot je peux dire


Je ne comprends pas comment cela fonctionne, pourriez-vous créer une corbeille ici, où vous collez l'intégralité de l'exemple: pastebin.com/index.php?e=2


Son format de date presque fonctionnel ne fonctionne pas correctement.Je reçois le format Fri Oct 04 2019 19:24:00 GMT + 0530 (India Standard Time) .. J'ai également mis à jour ma question.


Utilisation. format au lieu d'analyser. Alors passez la date directement au format sans dateutilsb.


Oui, j'ai essayé mais je n'obtiens pas l'heure correcte .. Je n'ai toujours que l'heure UTC.


var vpDate = dateUtils.toString (vpDateObj); var date = new Date (vpDate) var format2 = locale.format (date, {sélecteur: "date", datePattern: "jj-MMM-aaaa HH: mm"}); alerte (format2);


c'est bizarre, devrait alerter le temps au format pattern, pas moyen!


Oui ..Lorsque j'analyse, j'obtiens l'heure locale mais le format est différent


vérifier avant et après l'utilisation du format, ma fonction ne s'appelle pas $


oui, j'espère que vous trouverez une solution, car je ne sais pas où est le problème :)


Oui .. C'est ma date avant d'appeler la méthode de format Fri Oct 04 2019 13:48:00 GMT + 0530 (India Standard Time) et après le format, je reçois ce 04-Oct- 2019 13:48



0
votes

Vous pouvez utiliser formatDate (); fonction. formatDate () affiche la date et l'heure correctes en fonction du fuseau horaire

  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 commentaires