none
hard code DateTime RRS feed

  • 問題

  • 我想問我可否hard code DateTime

    假如我設startDate是DateTime

    我試過

    DateTime startDate = new DateTime("2/11/2007 上午 12:00:00");

    這是不行的

    請問有甚麼方法可以做到呢??

     

    2008年1月2日 上午 06:53

所有回覆

  • DateTime 建構函數這麼多,你一定要挑這個嗎?

    程式碼區塊

     

    DataTime startDate = DateTime.ParseExact("2/11/2007 00:00:00", "d/M/yyyy HH:mm:ss", null);

    DateTime startDate = new DateTime(2007, 11, 2, 0, 0, 0);

     

     

    日期時間字串中最好不要出現中文,而且用 24 小時制問題會少很多。

    2008年1月2日 上午 06:57
    版主
  • 其實我是沒有能力修改我上一任同事的source code

    public Collection<StockSale> getMSaleFigure(string itemcode)
            {
                DateTime startDate = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1).AddMonths(-3);
                DateTime endDate = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1).AddDays(-1);

                Collection<StockSale> Sales = new Collection<StockSale>();
                using (SQL sql = new SQL("SELECT Item, Qty, Date FROM StockSalesGroupByItem WHERE (Date BETWEEN @start AND @end) AND (Item=@itemcode)", clsVariables.connStr))
                {
                    sql.Parameters.AddWithValue("@itemcode", itemcode);
                    sql.Parameters.AddWithValue("@start", startDate);
                    sql.Parameters.AddWithValue("@end", endDate);
                    using (NullableDataReader dr = new NullableDataReader(sql.ExecuteReader()))
                    {
                        while (dr.Read())
                        {
                            StockSale s = new StockSale();
                            s.ItemCode = dr.GetString(0);
                            s.Sale = dr.GetInt32(1);
                            s.Month = dr.GetDateTime(2).Month;
                            s.Year = dr.GetDateTime(2).Year;
                            Sales.Add(s);
                        }
                    }
                    return (Sales.Count > 0) ? Sales : null;
                }
            }

     

    這個function在四月之後沒有問題,但1,2,3月就會出問題,大家想到辦法修改嗎??

     

    2008年1月2日 上午 07:37
  • 同樣的問題請在原討論緒繼續說明。前一篇不就給你了:

    程式碼區塊

    startDate = DateTime.Parse(DateTime.Today.AddMonths(-3).ToString("yyyy/MM/1"))

     

     

    直接指定日期:

    程式碼區塊

    startDate = DateTime.Parse("2007/10/1 00:00:00")

    startDate = DateTime.Parse("2007/10/1")

     

     

    同小朱說的,不要用中文,這句:

    程式碼區塊

    startDate = DateTime.Parse("2/11/2007 上午 12:00:00")

     

     

    只有在中文的地區語言選項才有可能被解譯,上下午還要設定為中文才可以。

     

    VB 的話可以用日期常數,是用 # 包起來,C# 不知道有沒有。日期常數必須為

    #月/日/年  時:分:秒#  或 #月-日-年  時:分:秒#

    例如:

    #2/11/2007# 或 #12-1-2007#

     

    月日年順序不能亂,與我們常用年月日慣例不太一樣。

     

    印象中標準的 SQL 日期是 月-日-年 ,大概年月日是我們東方的慣例吧~

    2008年1月2日 上午 08:03
  • 為何我輸入

    startDate = new DateTime.Parse("2/10/2007 上午 12:00:00");

    會有以下錯誤??

    錯誤 1 名稱 'startDate' 不存在於目前內容中 E:\C#Kin Ip\RemotingServer\普通系統\產品目錄\DB產品.cs 172 13 RemotingServer

    錯誤 2 'System.DateTime.Parse(string)' 是 '方法',但卻當成 '型別' 使用 E:\C#Kin Ip\RemotingServer\普通系統\產品目錄\DB產品.cs 172 38 RemotingServer

     

     璉璉 寫信:

    同樣的問題請在原討論緒繼續說明。前一篇不就給你了:

    程式碼區塊

    startDate = new DateTime.Parse(DateTime.Today.AddMonths(-3).ToString("yyyy/MM/1"))

     

     

    直接指定日期:

    程式碼區塊

    startDate = new DateTime.Parse("2007/10/1 00:00:00")

    startDate = new DateTime.Parse("2007/10/1")

     

     

    同小朱說的,不要用中文,這句:

    程式碼區塊

    startDate = new DateTime.Parse("2/11/2007 上午 12:00:00")

     

     

    只有在中文的地區語言選項才有可能被解譯,上下午還要設定為中文才可以。

     

    VB 的話可以用日期常數,是用 # 包起來,C# 不知道有沒有。日期常數必須為

    #月/日/年  時:分:秒#  或 #月-日-年  時:分:秒#

    例如:

    #2/11/2007# 或 #12-1-2007#

     

    月日年順序不能亂,與我們常用年月日慣例不太一樣。

     

    印象中標準的 SQL 日期是 月-日-年 ,大概年月日是我們東方的慣例吧~

    2008年1月2日 上午 08:28
  • new 要去掉。

     

    如果你未宣告 StartDate 請用:

    程式碼區塊

    DateTime startDate = DateTime.Parse("2/10/2007 上午 12:00:00");

     

     

     

    如果已宣告型別請用:

    程式碼區塊

    DateTime startDate;

    // ...

    startDate = DateTime.Parse("2/10/2007 上午 12:00:00");

     

     

     

    2008年1月2日 上午 08:37
  •  璉璉 寫信:

    同樣的問題請在原討論緒繼續說明。前一篇不就給你了:

    程式碼區塊

    startDate = new DateTime.Parse(DateTime.Today.AddMonths(-3).ToString("yyyy/MM/1"))

     

     

    直接指定日期:

    程式碼區塊

    startDate = new DateTime.Parse("2007/10/1 00:00:00")

    startDate = new DateTime.Parse("2007/10/1")

     

     

     

    璉大 ...

    DateTime.Parse() 不用加 new 吧?

    2008年1月2日 上午 08:38
    版主
  • 改掉了~

    因為沒開 C# 專案測,又從他原始碼直接改,就沒注意到前面有個 new ...

     

    2008年1月2日 上午 08:40
  • 感激各位幫忙,但問題仍然未能解決

    現在唯有自己寫一個新的就是了..........

     

     

     

     

     璉璉 寫信:

    改掉了~

    因為沒開 C# 專案測,又從他原始碼直接改,就沒注意到前面有個 new ...

     

    2008年1月2日 上午 09:24
  • 試試看


    程式碼區塊




    DateTime dt = DateTime.ParseExact("2/11/2007 上午 12:00:00", "d/M/yyyy tt hh:mm:ss", null);





    參考: DateTime.ToString 方法 (String)
    2008年1月2日 上午 10:32