2014-02-07 15 views
1

我想轉換我的文本框中的文本,格式=「MMyyyy」,並與datetime now =「MMyyyy」格式必須是MMyyyy,但我的問題是如何將其轉換回日期比較他們誰是高或低DateTime textbox monthyear only

if (Convert.ToDateTime(txtperiodcovered.Text) < DateTime.Now.Date) 
{ 
    MessageBox.Show(@"period cover must be higher than year and month now"); 
} 
+0

「txtperiodcovered.Text」的值究竟是什麼? –

+1

將它轉換回來,從什麼到什麼?你的問題很混亂。 –

+0

聲明一個將保存原始值的變量。 – Stuart

回答

0

我不覺得我完全理解你的問題,但我認爲你可以在使用DateTime.TryParseExact method這個案例;

使用指定的格式,區域性特定 格式的信息,和樣式當量的日期和時間其 日期時間的指定字符串表示形式轉換。 字符串表示 的格式必須完全匹配指定的格式。

DateTime dt; 
if (DateTime.TryParseExact("201010", "yyyyMM", 
          CultureInfo.InvariantCulture, 
          DateTimeStyles.None, out dt)) 
{ 
    if (dt < DateTime.Now.Date) 
    { 
    MessageBox.Show(@"period cover must be higher than year and month now"); 
    } 
} 

但因爲你沒有寫一天的一部分,你的dt01.10.2010午夜作爲默認值。

+0

哇謝謝你,這是真棒!它有效的人!謝謝!! :) –

+1

@JohnMarkQuizon你很受歡迎。下一次,請嘗試更清楚地解釋你的問題';)' –

+0

我的英語不好對不起,再次感謝他的偉大! –

0

您必須使用「完整」 DateTime不僅年+月變量:

public DateTime Period { get; set; } // initialize it accordingly 

現在你可以用它來顯示它在不同的格式,例如:

txtperiodcovered.Text = Period.ToString("MMyyyy"); 

或者比較吧:

if (Period < DateTime.Now.Date){ } 

在這條路上,你不必總是從string解析它datetime,反之亦然,你就不會遇到本地化問題。

但是,如果你需要一個字符串,反正日期時間僅包含年和月使用DateTime.ParseExact轉換:

DateTime monthPeriod = DateTime.ParseExact("201010", "yyyyMM", CultureInfo.InvariantCulture); // day amd time info is lost