J'essaie d'intégrer à l'API de repos de TeamCity. Il contient des horodatages de la forme Comment puis-je convertir ceci à partir d'une chaîne code> sur un (et sans le + zzzz), mais je reçois 20100804T104413 + 0100 code>. C'est presque em> iso 8601, mais ne contient pas les traits d'union. DateTime code> in. RAPPORTER? J'ai essayé: p> String n'a pas été reconnu comme une date d'heure valide. Code> p > p>
3 Réponses :
Cela fonctionne pour moi:
using System;
using System.Globalization;
class Test
{
static void Main()
{
string text = "20100804T104413+0100";
DateTime dt = DateTime.ParseExact
(text,
"yyyyMMdd'T'HHmmsszzz",
CultureInfo.InvariantCulture);
Console.WriteLine(dt);
}
}
J'aimerais suggérer d'utiliser à la place DateTimeOffset, sinon vous perdrez vos informations TZ dans les deux manières, risquez d'introduire des compensations qui n'étaient pas auparavant.
je connais le q. est déjà répondu, mais je crois que quelques notes sont en place, si je peux: em> Je conseillerais à l'aide de DateTime dans votre scénario, car il semble probable que que vous voulez que la représentation soit égale lorsqu'elle soit roulée (c'est-à-dire lorsqu'elle est recouverte à nouveau sur une chaîne, la représentation doit être égale). Le problème avec DateTime est qu'il ne conserve pas les informations exactes du fuseau horaire. P> avec la solution proposée, les informations de fuseau horaire peuvent changer. Cela dépend de l'entrée, mais d'utiliser la culture invariante, vous recevrez un objet DateTime de problèmes avec l'utilisation de DateTime H2>
{4-8-2010 11:44:13} code>. Je pensais que cela pourrait être corrigé que cela puisse être corrigé en utilisant dentetimestyleyle.roundtripkind code> comme dans l'exemple suivant, mais en considérant qu'il n'y a pas d'informations de fuseau horaire dans DateTime code>, cela ne fonctionnera toujours pas: convertedBack = parsedDate.ToString("yyyyMMdd'T'HHmmssK").Replace(":", "");
Dans ce cas, je ne suis pas dérangé par Roundtrip Fidelity, car c'est pour un tableau de bord d'équipe en lecture seule; Mais tout est de bonne information. Merci.
C'est un peu hors sujet dans cet ancien poste, mais depuis que j'ai trouvé le poste lorsque Googling pour l'analyse des dates d'API de TeamCity API, voici une version JavaScript au profit de quelqu'un d'autre intéressé par la même chose:
moment("20150107T085108+0100", 'YYYYMMDDTHHmmssZ').format('YYYY-MM-DD HH:mm:ss')
Roger - pas sûr, mais Jon Skeet sera le long d'un instant :)