2016-12-10 7 views
0

を使用して元の日付を表示するにはどうすればいいですか。しかし、私はduedateの日付が1/1/0001に変更されていると計算すると?System DateTime C#

私は、元の二重化を表示したままにするのに役立つ必要があります。

private short BookLoan; 

private void btnCal_Click(object sender, EventArgs e) 
{ 
    System.DateTime DateDueBack = new System.DateTime(); 

    long DaysOverdue = 0; 
    decimal FineRate = default(decimal); 
    decimal Fine = default(decimal); 

    txtDateDue.Text = DateDueBack.ToString(); 

    DaysOverdue= Microsoft.VisualBasic.DateAndTime.DateDiff("d", DateDueBack, txtDateReturned.Text); 

    switch (numericUpDown1.DecimalPlaces) { 
     case 0: 
      BookLoan = 1; 
      FineRate = 2; 
      break; 
     case 1: 
      BookLoan = 3; 
      FineRate = 3; 
      break; 
     case 2: 
      BookLoan = 10; 
      FineRate = 5; 
      break; 
     case 3: 
      BookLoan = 30; 
      FineRate = 35; 

      break; 
    } 

    if (DaysOverdue <= 0) { 
     DaysOverdue = 0; 
    } 

    if (DaysOverdue > 0) { 
     Fine = FineRate * DaysOverdue; 
    } else { 
     Fine = 0; 
    } 

    txtDateOverDue.Text = DaysOverdue + " days overdue"; 
    txtReturnFine.Text = "Fine of " + Strings.Format(Fine, "Currency") + " to pay"; 
} 
+2

VBの暗黙のDateTime /文字列変換に依存しないでください。明示的な 'DateTime.Parse'または' TryParse'呼び出しを使用してください。 – Dai

+0

シェードをもっと明るくしてください –

答えて

0
System.DateTime DateDueBack = new System.DateTime(); 

この行は、新しいDateTimeオブジェクトを作成するが、それは01/01/0001でデフォルト値がかかりますので、それに日付を割り当てていません。

何らかの情報源、おそらく本ローンが保管されているデータベースのために、日付を読む必要があります。

また、あなたは、単にバック期日からDateTime.Todayを減算し、日数の合計数を取得することにより、延滞日数を計算することができます。そして、あなたができるよう

TimeSpam overdue = DateDueBack - DateTime.Today; 
double daysOverDue = overdue.TotalDays; 

これは、分数日が含ま最寄り一日にラウンドをか切り捨てて、適切な日数を取得します。

+0

ディスプレイに元の日付が表示されていますが、日付の値で計算されています01/01/0001 –

+0

@ChabotaMbola DateTimeオブジェクトのToString()メソッドが現在のカルチャ分散01/01/0001を取得してそれをシステムの現在の日付に変換する原因となっているDateTimeオブジェクトに置き換えます。 – aguertin

関連する問題