none
判斷不符合日期的問題 RRS feed

  • 問題

  • 請教各位前輩

    這是把所選擇的日期儲到session後的判斷問題,如下語法所述

    Dim a As String() = Split(Session("SelectedDates1"), ",")
                For z As Integer = 0 To a.Length - 1
                    If a(z) <> "" Then
                        ListBox1.Items.Add(a(z))
                    End If


                Next

    能否在儲存到listbox之前,判斷這些日期中(如99/5/18,99/5/19,99/5/21,99/5/31),以最小的日期為基準,超過7天的就不儲到listbox中呢?即99/5/31的值不符合條件(判斷所選的日期有沒有在一個星期內)

    煩請各位前輩指點

    謝謝

    2010年5月20日 下午 05:01

解答

  • .net framework 2.0沒法子用linq,

    不過你想把日期相近的當作一組,我已經跟你說了作法了...

    請看下面這段:

    這類的東西應該屬於程式自行定義的方式,得由程式自己控制。

    例如用陣列暫存,排序後,像bubble sort一樣,檢查element跟element之間的關係,在分別塞到不同的暫存資料集合,
    loop+判斷式+塞到暫存的集合,最後就會變成你的集合是{{5/18,5/19}, {5/21},{5/31}}這樣的結果。
    就可以透過陣列長度去看裡面有幾個區間了。


    常用資源參考:
    小弟的blog: In 91
    • 已提議為解答 阿尼Moderator 2010年5月24日 上午 04:00
    • 已標示為解答 Lolota Lee 2010年5月26日 上午 07:40
    2010年5月23日 下午 02:53
    版主

所有回覆

  • Dim a = From s As String In "99/5/18,99/5/19,99/5/21,99/5/31".Split(","c) Select Convert.ToDateTime(s)
    Dim min As DateTime = a.Min().AddDays(7)
    
    For Each d As DateTime In a
    	If d < min Then
    		ListBox1.Items.Add(d.ToString("yy/MM/dd"))
    	End If
    Next
    2010年5月20日 下午 05:50
    版主
  • 請教前輩

    日期的部份它能否用 "加"/"減"的方式來計畫日期區間呢?

    如99/5/18,99/5/19,99/5/21,99/5/31,代表5/18-5/19為一區間,5/21,5/31為其它兩組區間(即連續日期的當一組)

    煩請各位前輩指點

    謝謝

    2010年5月21日 上午 07:44
  • 請教前輩

    日期的部份它能否用 "加"/"減"的方式來計畫日期區間呢?

    如99/5/18,99/5/19,99/5/21,99/5/31,代表5/18-5/19為一區間,5/21,5/31為其它兩組區間(即連續日期的當一組)

    煩請各位前輩指點

    謝謝

    不是很懂你的需求,

    這類的東西應該屬於程式自行定義的方式,得由程式自己控制。

    例如用陣列暫存,排序後,像bubble sort一樣,檢查element跟element之間的關係,在分別塞到不同的暫存資料集合,

    loop+判斷式+塞到暫存的集合,最後就會變成你的集合是{{5/18,5/19}, {5/21},{5/31}}這樣的結果。

    就可以透過陣列長度去看裡面有幾個區間了。

    PS:您不要每次都等發問的時候,才去標示前面人家回答你的問題,這似乎已經是您的習慣了。
    當然,因為隔太久了,所以都有版主幫忙標示答案了,但您應該對自己的問題負責,對回答問題的人尊重,這樣大家會很樂意的花時間替您想辦法解決問題。


    常用資源參考:
    小弟的blog: In 91
    2010年5月21日 上午 07:51
    版主
  • 請教前輩

    它使用後會有下列的錯誤訊息

    -->型別'object'的運算式無法查詢。請確定您沒有遺漏組件參考(或)LINQ 提供者的命名空間匯入

    而我試著加入參考imports system.data.linq

    但結果還是一樣,目前語法如下

    Dim a = From s As String In Session("SelectedDates1").Split(","c) Select Convert.ToDateTime(s)

                Dim min As DateTime = a.Min().AddDays(7)

                For Each d As DateTime In a
                    If d < min Then
                        ListBox1.Items.Add(d.ToString("yy/MM/dd"))
                    End If
                Next

     

    煩請各位前輩指點

    謝謝

    2010年5月21日 下午 02:59
  • 在此說聲不好意思

    之前問的問題,雖然有些比較晚回結果,但我後來有調整最後由我這邊來標示最後我的測試結果

     

    2010年5月21日 下午 03:01
  • 是用VS2008跟.net framework 3.5開發的嘛?
    常用資源參考:
    小弟的blog: In 91
    2010年5月21日 下午 03:01
    版主
  • 我是使用vs2008+.net framework2.0
    主要是想把抓到的日期作個分群效果,例如所儲存的資料如下
    {2010/5/10,2010/5/11,2010/5/12,2010/5/14,2010/5/15,2010/5/18}

    能否依日期相近的當作一組,如上述的日期可以分三組
    2010/5/10-2010/5/12
    2010/5/14-2010/5/15
    2010/5/18
    (日期沒有間隔的為一組)

    煩請各位前輩指點

    謝謝

    2010年5月23日 下午 01:01
  • .net framework 2.0沒法子用linq,

    不過你想把日期相近的當作一組,我已經跟你說了作法了...

    請看下面這段:

    這類的東西應該屬於程式自行定義的方式,得由程式自己控制。

    例如用陣列暫存,排序後,像bubble sort一樣,檢查element跟element之間的關係,在分別塞到不同的暫存資料集合,
    loop+判斷式+塞到暫存的集合,最後就會變成你的集合是{{5/18,5/19}, {5/21},{5/31}}這樣的結果。
    就可以透過陣列長度去看裡面有幾個區間了。


    常用資源參考:
    小弟的blog: In 91
    • 已提議為解答 阿尼Moderator 2010年5月24日 上午 04:00
    • 已標示為解答 Lolota Lee 2010年5月26日 上午 07:40
    2010年5月23日 下午 02:53
    版主