11
votes

De quel format est cette fois-ci?

J'ai une requête WMI qui spécifie le temps dans ce format '2009021900000000.000000 + 480'

Quelqu'un peut-il me dire quel format est-ce format et que .Net a des fonctionnalités intégrées à travailler avec elle?

Modifier

Cette valeur de temps provient d'une requête que j'ai trouvée. Je ne sais pas quelle valeur temporelle a été utilisée pour le générer. Je dois juste pouvoir convertir une valeur temporelle à ce format.

Edit 2

J'ai découvert ce temps est dans CIM_DateTime format.


0 commentaires

5 Réponses :


3
votes

Jetez un coup d'oeil à ce lien . Juste en cherchant, je dirais que c'est dans un format de yyyymmddhhmms. [Un tas de caractères 'f'].


0 commentaires

1
votes

Cela aiderait si vous nous avez dit que cela a été représenté. 2009 au début suggère qu'il peut s'agir de yyyymmddhhmmss.ffffff + tz

(F = fraction de secondes et TZ étant la différence entre UTC en minute, donc ici, 6 heures)


2 commentaires

Besoin de faire attention avec le cas des personnages. Mm est mois, où mm est minutes.


Ce n'était pas conçu comme une chaîne de format, simplement une description (lisible par l'homme).



17
votes

Ceci ressemble à une chaîne d'heure de date standard sans séparateurs:

'2009021900000000.000000 + 480'

'yyyymmddhhmmss.ffffff + 480'

aaaa - l'année en quatre chiffres.
Mm - le mois numérique. Les mois à un chiffre ont un zéro direct.
DD - le jour du mois. Les journées à un chiffre ont un zéro direct.
HH - l'heure dans une horloge de 12 heures. Les heures à un chiffre ont un zéro direct. (Cela pourrait aussi être HH, qui est l'heure dans une horloge de 24 heures avec des heures à un chiffre ayant un zéro nulle.)
mm - la minute. Les minutes à un chiffre ont un zéro direct.
FFFFFF - La fraction d'une seconde sur une précision à six chiffres.

Le "+480" est probablement un indicateur de fuseau horaire, bien que non une standard. Normalement, les zones de temps sont représentées comme des heures (ou des heures et des minutes) de UTC. Cela semble probablement seulement être minutes. En tant que tel, il n'y a pas de spécificateur de format standard.

La classe DateTime dans .NET est ce que vous utiliseriez pour travailler avec cette valeur. Cependant, vous voudrez probablement prendre la partie «+480» éteinte avant d'analyser la chaîne restante dans une variable réelle DateTime. Vous pouvez ensuite le régler au bon fusain ou effectuer la conversion de fuseau horaire (à partir de minutes en heures / minutes) à l'avance à l'avance et modifiez le "+480" à la représentation de fuseau horaire correcte, puis transmettez le tout à DateTime.parse.


0 commentaires

1
votes

Vous pouvez analyser cela avec DateTime.parseexact-Methode (chaîne, chaîne, iformatProvider, denteTimestyle)

La chaîne de format est "yyyymmddhhmmss.fffffffzzz"


1 commentaires

Cela ne fonctionne pas car les 4 derniers caractères sont le fuseau horaire en minutes, mais DateTime "ZZZ" attend des heures.



21
votes

Comme d'autres ont suggéré que la chaîne est un exemple de DateTime MOF Type de données . C'est une chaîne de longueur fixe et vous pouvez trouver des détails sur sa structure Ici . .NET utilise Espace de noms.Management pour accéder au WMI et un de ses classes est GestionDateTimeMeconverter classe qui facilite le travail avec Valeurs DateTime WMI.

Voici comment vous utilisez tout cela: P>

var time_written = System.Management.ManagementDateTimeConverter.ToDateTime((string)result.GetPropertyValue("TimeWritten")); 


2 commentaires

Système.Management.ManagementDateTimeMeconverter.TodateTime ((ST Bague) Résultat.geprope Ryvalue ("Timewritte n")); Aurait pu m'a sauvé une heure de l'écrire moi-même = p


J'ai été recherché une heure pour un moyen de convertir cela. Merci merlyn