2016-11-07 6 views
1

Ich willNew Datetime von String

ich ein neues DateTimeOffset mit offset = -5 aus einem String erstellen:

string dt = "11082016";  
DateTime date = DateTime.ParseExact(dt, "MMddyyyy", 
            CultureInfo.InvariantCulture, 
            DateTimeStyles.None);  
DateTimeOffset dto = new DateTimeOffset(date, TimeSpan.FromHours(-5)); 

Ist es möglich, erstellen direkt eine DateTimeOffset ohne durch DateTime vorbei?

+0

'DateTimeOffset dto = neu DateTimeOffset (2016, 11, 8, 0, 0, 0, TimeSpan.FromHours (-5));' – Jim

+0

Kannst du 'DateTimeOffset' anstelle von' DateTime' angeben, oder "TimeSpan"? –

+0

@LeiYang Ich muss dies für die Arbeit mit Zeitzonenbewusstsein verwenden –

Antwort

2

Ist es möglich, direkt ein DateTimeOffset zu erstellen, ohne DateTime zu übergeben?

Nein, das ist nicht möglich.

Jede DateTimeOffset Instanz muss haben es ist DateTime Teil. Sie kann nicht eine Instanz nur mit einem UTC Offset Wert erstellen.

Of course it has some constructors, die nicht DateTime als Parameter direkt wie;

  • Datetimeoffset (Int32, Int32, Int32, Int32, Int32, Int32, Int32, Kalender, Timespan)
  • Datetimeoffset (Int32, Int32, Int32, Int32, Int32, Int32, Int32, Timespan)
  • Datetime (Int32, Int32, Int32, Int32, Int32, Int32, Timespan)
  • Datetime (Int64, Timespan)

Aber diejenigen Int32 und Int64 Werte sind immer noch erzeugen Sie intern eine für aktuelle Instanz .DateTime property.

Ich möchte mit einer neuen Datetime erstellen offset = -5 aus einem String

Wenn Sie das tun könnten, würden Sie nicht Notwendigkeit dieser Zeichenfolge, meinst du nicht?

1

Sicher können Sie:

string dt = "11082016"; 
string o = "-5"; 
var dto = DateTimeOffset.ParseExact(dt + o, "MMddyyyyz", CultureInfo.InvariantCulture); 

Obwohl es nicht sehr schön ist - der Punkt ist DateTimeOffset auch eine ParseExact Methode hat.