La conversion d'une Époque à Date dans Matlab
J'ai un tableau de l'Époque millisecondes (tableau de nombres) dans Matlab. Je voudrais les convertir en des date et heure UTC format JJ-MM-AAAA HH:MM.
Est-il un prédéfini Matlab manière de faire ceci ou devrai-je écrire ma propre fonction?
Vous êtes probablement à la recherche pour le
datestr
fonction.OriginalL'auteur Erol | 2012-09-30
Vous devez vous connecter pour publier un commentaire.
Supposons que, vous commencez avec un vecteur
time_unix
, puis:Notes:
1) Voir la définition de matlab.
2) 8.64e7 est le nombre de millisecondes dans une journée.
3) Matlab ne s'applique pas tout le temps-horaire des quarts de travail, de sorte que le résultat est le même rapport à l'heure UTC.
4) Exemple pour assurer la transformation:
Pour résumer, voici deux fonctions:
L'matlab temps ici est numérique. Vous pouvez toujours convertir en chaîne à l'aide de datestr()
Mise à jour pour nanosecondes
864e5
peut-être besoin d'être864e8
ou même864e11
.J'obtiens l'erreur suivante: "Erreur à l'aide de datevecmx La datevecmx fonction n'accepte que des doubles des tableaux. "
>>
... micro or nano...
, eh bien, il suffit de le diviser en conséquenceapplique double(). Par défaut, tous les numéros dans matlab sont doubles, de sorte
time_unix = 1339116554872;
est également en doubleOriginalL'auteur Serg
J'ai essayé le code ci-dessus, mais les résultats étaient mauvais. J'ai réalisé l'erreur est liée à la délicate définition de l'Unix de temps (époque). Unix temps (époque) est défini comme le nombre de secondes après 1-1-1970, 00h:00, pas le nombre de **milli**secondes (http://en.wikipedia.org/wiki/Unix_time). Avec cette définition, le temps Unix doit donc être divisé par 8.64e5 au lieu de 8.64e7.
En outre,
datenum('1970', 'yyyy')
ne semble pas se traduire dans les temps de référence de 1-1-1970, 00h:00.Voici mon code améliorée:
OriginalL'auteur mbrennwa
Serg réponse est ce que j'ai l'habitude d'utiliser, quand je travaille dans MATLAB. Aujourd'hui j'ai eu envie de faire la conversion en date dans MATLAB comme le dit le titre - sans le datestring de conversion est précisé dans la question du corps et de sortie de la date de la coquille.
Voici ce que j'ai réglé sur pour l'arrondi date:
C'est vraiment juste le bash équivalent de ce que vous attendez: 719529 est le datenum de l'époque (1970-01-01 ou
datenum(1970,1,1)
dans MATLAB). Je suis également à tâtons à travers ksh ces derniers temps, et il semble que cela peut être fait avec:Que d'un côté de l'exercice, j'ai ajouté la partie décimale en arrière sur la date de bash - je n'ai pas la peine d'en ksh, mais c'est seulement en arithmétique et en va de même:
OriginalL'auteur sage