none
DateTime "上午""下午" 疑問 RRS feed

  • 問題

  • 我使用Oracle DB, 有一個Table中的欄位update_date為  "Date" type,

    裡面的資料格式是長這樣 "2014/04/21 下午 12:00:00",

    我把這個欄位秀在gridview上,秀出來的資料也是"2014/04/21 下午 12:00:00"沒問題,

    但,假設我想update時間的時候,會產生recognized as a valid DateTime Error.

    (我想應該是上午 下午惹的禍) 因此我想把"上午" "下午"拿掉,

    我利用下面的Code

    dateStr =  dtQuery.Rows[i][2] ;

     DateTime dateTime = DateTime.Parse(dateStr);
     dateStr = dateTime.ToString("yyyy/MM/dd  HH:mm:ss");
     dtQuery.Rows[i][2] = dateStr;

    轉成("yyyy/MM/dd  HH:mm:ss"); 我除掉"tt"會顯示的上午下午之後,

    設中斷點來看, dateStr 傳回datatable(dtQuery)時候還是會自動顯示"tt"

    gridview Page 上還是會跑出 "上午" "下午" ,

    原本 2014/04/21 12:00:00  會變成 > 2014/04/21 上午 12:00:00

    好像只是把下午轉換成上午而已?  

    想請問有無其他方法可以將顯示的"上午" "下午"拿掉呢?



    • 已編輯 servwa 2014年4月22日 上午 04:00
    2014年4月22日 上午 03:23

解答

所有回覆

  • 試試看處理dateTime變數:

    結果=dateTime.Value.ToString("HH:mm");

    2014年4月22日 上午 04:09
  • 不好意思... 好像沒有dateTime.Value的方法耶.. 

    http://msdn.microsoft.com/en-us/library/system.datetime_methods(v=vs.110).aspx

    我嘗試了 dateTime.Date.ToString("yyyy/MM/dd"); 還是沒變

    • 已編輯 servwa 2014年4月22日 上午 04:28
    2014年4月22日 上午 04:26
  • 如果是web form 可以在 Page_PreRender 加以下這段

            protected void Page_PreRender(object sender, EventArgs e)
            {
                foreach (GridViewRow row in GridView1.Rows)
                {
                    var dateString = row.Cells[0].Text;
                    DateTime date;
                    if (DateTime.TryParse(dateString, out date))
                        GridView1.Rows[row.RowIndex].Cells[0].Text = date.ToString("yyyy/MM/dd");
                    else
                        GridView1.Rows[row.RowIndex].Cells[0].Text = "<無效的日期>";
                }
            }


    以下為簽名檔,如果你愛拉椅子坐那就是你的問題。
    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

    在標題或文章註明很急
    不會增加網友回覆速度

    2014年4月22日 上午 04:31
    • 已標示為解答 servwa 2014年4月22日 上午 06:53
    2014年4月22日 上午 04:32
  • 非常感謝各位,我解決了
    2014年4月22日 上午 06:53