2010-10-15 21 views
3

J'ai un enregistrement que j'écris dans un fichier CSV en utilisant FileHelpers. Je veux que les champs DateTime de la structure soient écrits en tant que date UTC. J'ai actuellement le formatter suivant:Format DateTime à UTC avec FileHelpers

[FieldConverter(ConverterKind.Date, "yyyy-MM-dd")] 

Que dois-je faire pour qu'il sorte la date UTC?

Répondre

3

Le doc dit:

Vous pouvez consulter les chaînes au format pris en charge vérifient les documents MSDN pour DateTime.ParseExact

Ainsi, selon: http://msdn.microsoft.com/en-us/library/az4se3k1.aspx

[FieldConverter (ConverterKind.Date, "u")]

"u" => « yyyy '-' MM '-' dd HH ':' mm ':' ss'Z '" Il ne convertit pas la date en utc, il suffit de la formater

Vous avez encore besoin de DateTime.ToUniversalTime pour le convertir.

Modifier Si vous avez quelque chose comme:

[FieldConverter(ConverterKind.Date, "ddMMyyyy")] 
public DateTime ShippedDate; 

Ensuite, ajoutez une température ShippedDateUTC:

public DateTime ShippedDate; 

[FieldConverter(ConverterKind.Date, "ddMMyyyy")] 
public DateTime ShippedDateUTC { 
    get{ return ShippedDate.ToUniversalTime();} 
} 
+1

Merci, mais il donne Attribut 'FieldConverter' n'est pas valide sur ce type de déclaration. Il n'est valable que sur les déclarations 'champ'. – FunLovinCoder

+0

J'ai juste utilisé ToUniversalTime() avant d'écrire l'enregistrement et cela a fonctionné. – FunLovinCoder

1

Utilisez la méthode ToUniversalTime() de la classe DateTime

Ainsi, si le ConverterKind.Date est de type DateTime votre code doit être

[FieldConverter(ConverterKind.Date.ToUniversalTime(), "yyyy-MM-dd")] 
+1

Malheureusement, ConverterKind.Date est pas de type DateTime. – FunLovinCoder

3

Vous pouvez envelopper la transformation avec un setter public qui attribue la valeur droit à un champ privé. Par exemple:

public class OutputRecord 
{ 
    [FieldConverter(ConverterKind.Date, "ddMMyyyy")] 
    private DateTime dateInUtc: 

    public void SetDate(DateTime date) 
    { 
     dateInUtc = date.ToUniversalTime(); 
    } 

} 

Vous pouvez également utiliser un convertisseur personnalisé http://www.filehelpers.com/example_customconv.html

+0

Merci MarcosMeli – FunLovinCoder