2009-08-27 37 views
0

VB代碼。如何在vb.net中編寫日期代碼?

dteFrom = Format(CDate(Year(Date) & "-" & Month(Date) & "-" & "01"), "yyyy-mm-dd") 
dteTo = Format(CDate(Year(Date) & "-" & Month(Date) & "-" & DaysInMonth(dteFrom)), "yyyy-mm-dd") 

我複製VB.NET的代碼,它顯示錯誤(日期)

dteFrom = Format(CDate(Year(Of Date)() & "-" & Month(Of Date)() & "-" & "01"), "yyyy-mm-dd") 
dteTo = Format(CDate(Year(Of Date)() & "-" & Month(Of Date)() & "-" & DaysInMonth(dteFrom)), "yyyy-mm-dd") 

任何一個可以幫助解決這個問題。

需要VB.Net代碼。

回答

1

這將是最接近原始的代碼:

dteFrom = Format(CDate(Year(Date.Today) & "-" & Month(Date.Today) & "-" & "01"), "yyyy-MM-dd") 
dteTo = Format(CDate(Year(Date.Today) & "-" & Month(Date.Today) & "-" & Date.DaysInMonth(Year(Date.Today), Month(Date.Today))), "yyyy-MM-dd") 

這將是一個更加「.NET」的方式做到這一點:

dteFrom = String.Format("{0:yyyy-MM}-01", Date.Today) 
dteTo = String.Format("{0:yyyy-MM}-{1:00}", Date.Today, Date.DaysInMonth(Year(Date.Today), Month(Date.Today))) 
+0

請注意格式字符串是大寫** M **月。小寫** m **是分鐘。 VB6的功能是「聰明的」,並根據模式中的邏輯在幾分鐘和幾個月之間進行區分(看起來像一個日期 - 月,看起來像一個時間 - 幾分鐘)。在.NET中,您必須區分大寫和小寫,就像String.Format函數一樣。 – awe 2009-08-28 05:53:49

0

喜歡的東西:

Dim dateString as String = string.format("{0:yyyy-MM-dd}", New DateTime(DateTime.Now.Year,DateTime.Now.Month, 1)) 
+0

這些都需要大寫;小寫會給你分鐘。 – 2009-08-27 05:16:19

+0

haha​​ha ... yes ofcourse :-) – ozczecho 2009-08-27 05:17:46

4

它看起來像你想代表當月的第一天和最後一天兩個字符串。在這種情況下,你可以做到以下幾點:

Dim today As Date = Date.Today 
Dim desiredFormat As String = "yyyy-MM-dd" 

Dim fromDate As Date = New Date(today.Year, today.Month, 1) 
Dim dteFrom As String = fromDate.ToString(desiredFormat) 

Dim toDate As Date = fromDate.AddDays(Date.DaysInMonth(today.Year, today.Month) - 1) 
Dim dteTo As String = toDate.ToString(desiredFormat)