2017-04-12 11 views
-2

Ich arbeite an einer bereits entwickelten Desktop-Anwendung in VS 2010 mit MS Access-Datenbank. Die Anwendung funktioniert gut in dd/MM/yyyy Format. Aber der folgende Code verwendet Convert.ToDateTime, die datetime Zeichenfolge in dd/MM/yyyy in das Systemformat ändert und daher Fehler gibt.DateTime-Format wird nicht in C geändert #

for (int i = 0; i <= (Convert.ToDateTime(dtp_Date.Text) - Convert.ToDateTime(dt.Rows[0]["Dat"].ToString())).TotalDays; i++) 
{ 
    double dtSale = _objCashInHand.getSaleSum(Convert.ToDateTime(dt.Rows[0]["Dat"].ToString()).AddDays(j).ToShortDateString().ToString()); 
    double dtPurchase = _objCashInHand.getPurchaseSum(Convert.ToDateTime(dt.Rows[0]["Dat"].ToString()).AddDays(j).ToShortDateString().ToString()); 
    double dtEventOrder = _objCashInHand.getEventOrder(Convert.ToDateTime(dt.Rows[0]["Dat"].ToString()).AddDays(j).ToShortDateString().ToString());       
    double dtCredit = _objCashInHand.getCreditSum(Convert.ToDateTime(dt.Rows[0]["Dat"].ToString()).AddDays(j).ToShortDateString().ToString()); 
    double dtDebit = _objCashInHand.getDebitSum(Convert.ToDateTime(dt.Rows[0]["Dat"].ToString()).AddDays(j).ToShortDateString().ToString()); 
    double previousvalue = Convert.ToDouble(dgv_Cash.Rows[(i + 1) - 1].Cells["OpeningAmount"].Value.ToString()); 
    dgv_Cash.Rows.Add(Convert.ToDateTime(dt.Rows[0]["Dat"].ToString()).AddDays(j).ToShortDateString(), dtSale, dtEventOrder, dtPurchase, dtCredit, dtDebit, (previousvalue + Convert.ToDouble(dtSale) + Convert.ToDouble(dtEventOrder) - Convert.ToDouble(dtPurchase) + Convert.ToDouble(dtCredit) - Convert.ToDouble(dtDebit)).ToString()); 
    j++; 
} 

Ich versuchte DateTime.ParseExact(dtp_Date.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture) aber das Datums-Zeitformat ist nach wie vor in Systems-Format.

Was mache ich, um das Datetime-Format in TT/MM/JJJJ auch in der for loop für richtiges Arbeiten zu halten?

+0

ist das Systemformat eine Epoche? –

+0

'DateTime.ParseExact' verändert das Format nicht, es analysiert Ihre Zeichenkette zur internen Systemdarstellung von' DateTime', wenn Sie es im 'Watch' Fenster sehen, ruft es einfach' ToString' Methode auf, die es standardmäßig in System umwandelt Format. Das Objekt selbst ändert sich nicht. –

+0

@DLNarasimhan: Nein, Systemformat ist keine Epoche. –

Antwort

0

Sie müssen Invariantculture angeben, wenn Sie DateTime in String konvertieren.

+0

Sorry, aber ich habe dich nicht verstanden. Wie geht das? Und wie wird es mir helfen? –

Verwandte Themen