Mi sembra che sia qualcosa che ho fatto mille volte, quindi non sono sicuro del perché sia così difficile ora. Ho creato un metodo che restituisce semplicemente la data di oggi per l'utente in base al loro offset UTC. Ma invece di restituire una stringa simile a una data, restituisce questa immondiziaC# DateTime to String Edizione
"䙭/䙭/Ἰ뻱䙭"
Ecco il codice.
public string getToday(Context context)
{
var settings = PreferenceManager.GetDefaultSharedPreferences(context);
var offset = settings.GetInt("offset", -5);
var now = DateTime.UtcNow.AddHours(offset);
return now.ToShortDateString();
}
Quando passo al codice utilizzando un punto di interruzione, offset e ora sembrano entrambi corretti. ora contiene parti di date valide che sembrano tutte accurate. Qualcosa sulla conversione ora in una stringa sembra andare terribilmente male. Anche provato:
return now.ToString("MM/dd/yyyy");
Stesso risultato. Parte strana è il codice sottostante in un'altra attività funziona senza problemi
var offset = TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now).Hours;
var now = DateTime.UtcNow.AddHours(offset);
now.ToString("MM-dd-yyyy")
Quale cultura è questo codice in esecuzione in? – Oded
@Oded Direi che non è inglese! – Zenexer
@Zenexer - Direi che è un dato di fatto. Il mio commento era più di un puntatore all'OP. – Oded