Vorrei scrivere un metodo che mi dà le 3 lettere - che rappresentano il giorno, il mese, l'anno - da un formato datetime.DateTime ottenere le lettere che rappresentano giorno, mese, anno dalla correnteiatura
Così nella cultura en-US miei valori di ritorno desiderati sarebbe (più il separatore)
- d
- M
- y
- /
a de-DE lo stesso metodo deve restituire
- T (T ag = giorno)
- M (M onat = mese)
- J (J Ahr = anno)
- . (Separatore)
ho avuto uno sguardo al modulo DateTimeFormatInfo classe CurrentCulture ma potrebbe trovare solo il separatore hai qualche idea di come posso ottenere il resto?
var culture = Thread.CurrentThread.CurrentCulture;
Console.WriteLine(culture.DateTimeFormat.DateSeparator);
ho bisogno di questo perché la funzione ditesto all'interno Excel non accetta il formato dalla InvariantCulture e gestisce solo dal CurrentCulture.
Quindi qualcosa come questo non è valido in tedesco versione di Excel:
=TEXT(NOW();"dd.MM.yyyy")
questo deve essere impostato con
=TEXT(NOW();"TT.MM.JJJJ")
(non importa se fatto con VBA, è http://www.rondebruin.nl/win/s9/win013.htm
Il formato stringa può essere qualsiasi cosa poiché l'utente può inserirlo come preferisce s e ho bisogno di tradurlo alla cultura attuale.
quale stringa di formato stai usando? i valori chiave non cambiano con la cultura. –
che non esiste in .net - forse potresti scrivere qualcosa da te. –
@ DanielA.White come lo faresti, con una semplice manipolazione delle stringhe e come sarebbe il metodo, quali proprietà guarderesti, non conosco tutte le culture dove potrebbe essere diverso e un metodo di manipolazione delle stringhe valido per ogni cultura e ogni utente potrebbe aver cambiato le sue impostazioni in qualcosa di completamente casuale. –