L'identificatore di formato z
viene utilizzato per mostrare l'offset tra ora locale e ora UTC.
Non ha senso utilizzarlo con l'ora UTC (poiché è sempre 0). Ecco perché ricevi un avvertimento (grazie a @HansPassant per questa osservazione).
È possibile:
desidera stampare l'ora locale e l'offset per l'UTC (che è standard):
var dtString = DateTime.Now.ToString(@"yyyy-MM-ddTHH\:mm\:ss.f zzz");
O consiglia di stampare l'ora UTC e l'ora locale zona (che è davvero non comune):
var dtString = DateTime.UtcNow.ToString(@"yyyy-MM-ddTHH\:mm\:ss.f") + " " + DateTime.Now.ToString(@"zzz");
che è più o meno equ ivalent al codice (come spiegato nel @JeroenMostert link):
var dtString = DateTime.UtcNow.ToString(@"yyyy-MM-ddTHH\:mm\:ss.fzzz");
Ma la stringa risultante è non è standard a tutti e portare a interpretazioni errate.
"2015-02-18T12:08:15.1 +01:00"
viene letto come ora locale e fuso orario locale non ora UTC e fuso orario locale.
Inoltre è possibile trovare ulteriori informazioni su fuso orario e buoni esempi qui: TimeZone.CurrentTimeZone Property
Hai guardato https://msdn.microsoft.com/library/ms172213? –
Non è un'eccezione, è solo un avviso di debugger. Premere F5 per continuare.Se non si desidera visualizzarlo, utilizzare Debug> Eccezioni> Assistenti debug gestiti> deselezionare l'opzione DateTimeInvalidLocalFormat. Non preoccuparti di generare una stringa senza senso, una data UTC ovviamente non ha uno scostamento UTC. –
Grazie a @HansPassant, capito, stupido non ho pensato alla data e all'offset dell'UTC. – vijayp