String was not recognized as a valid datetime là gì năm 2024

  1. Bắt lỗi ngày tháng.
    Chào các bạn, mình có bài tập liên quan đến dạng ngày tháng. Mình muốn bắt lỗi ớ định dạng ngày tháng,ví dụ ngày tháng bắt phải nhập là yyyy-mm-dd, mà khi nhập vào dd-mm-yyyy thì báo lỗi và bắt nhập lại. Mình làm nhưng nó ra lỗi bằng tiếng anh " String was not recognized as a valid DateTime". Mình muốn sửa lỗi đó lại bằng Tiếng việt thì phải lam sao. Mong các bạn giúp đỡ.

    Thanks a lot.

    -
  2. > sửa lại nội dung lỗi thôi hả?

    try { //chuyển sang ngày tháng ở đây } catch[Exception ex] { if[ex.Message==" String was not recognized as a valid DateTime"] MessageBox["Ngay thang ko hop le", "Loi"]; }

    -
  3. > Cảm ơn bạn đã trả lời. Trong chương trình mình cũng đã bắt một lỗi là tuổi phải >=18 và mình cũng đã dùng try...... catch[exeption ex]. Cho nên khi mình dùng đoạn code mà bạn chỉ thì nó báo lỗi. -
  4. > bạn nói rõ hơn được ko? với lại mình nghĩ xác định tuổi >=18 thì dùng if bình thường thôi, dùng try..catch là sao mà bắt lỗi được. giống như bạn so sánh xem 0>=1 hay không thôi. lấy năm hiện tại trừ đi năm sinh -> số tuổi.

if[số tuổi Mình dùng try... catch và cũng có dùng properties. Như thế này: public DateTime Ngaysinh { get {return ngaysinh;} set { if[[DateTime.Today.Year]-[value.Year] Hiểu rồi, làm như vầy nghen [mình viết cho winform, bạn thay MessageBox.Show thành WriteLine nghen, thông cảm, làm biếng test trên console quá]:

DateTime ngaysinh;

public DateTime Ngaysinh { get { return ngaysinh; } set { if [[DateTime.Today.Year] - [value.Year] < 18] throw new Exception["Tuoi phai >= 18"]; else ngaysinh = value; } }

private void Nhap_NgaySinh[string s] { try { Ngaysinh = DateTime.Parse[s];

} catch [Exception ex] { if [ex.Message == "String was not recognized as a valid DateTime."] MessageBox.Show["Ngay thang ko hop le"]; else MessageBox.Show[ex.Message]; } }

-
  1. Chuyển string thành Datetime bị lỗi String was not recognized as a valid DateTime?

  2. > Khi ghi vào SQL sever tôi thường làm như sau:
    Mã:

string []tdate=date1.splip['\']string date=tdate[2]+'\'+tdate[1]+'\'+date[3];Date.value=date;

không biết có đúng ý bạn không

-
  1. > Bạn dùng ParseExact nên nó kiểm tra đúng từng chữ 1 thì mới chập nhận.

    dd/MM/yy hh:mm:ss tt thì tại thời điểm của mình viết bài sẽ là: 15/06/13 06:11:05 PM. Bạn có để ý là năm nó chỉ có 2 chữ số, nếu viết 15/06/2013 06:11:05 PM thì nó sẽ sai.

    -
  2. > bạn check lại cái thời gian hệ thống dd/mm/yyyy hay mm/dd/yyyy nhé. nếu ok rồi thì thử cái sau bạn để ý là ngày tháng năm sau khi chuyển qua string nó luôn có chiều dài là 10 nên dùng cái này cho nó dễ, trừ khi năm nay là 10000 nó mới sai, mà yên tâm lúc đó có ngôn ngữ khác rồi sai kệ nó [IMG]images/smilies/biggrin.png[/IMG]

date = DateTime.Parse["1/1/2013akjfhsdajfhalfhljdhsfjasdhlf".Substring[0, 10]];

-
  1. >
    Gửi bởi lqthinh92

bạn check lại cái thời gian hệ thống dd/mm/yyyy hay mm/dd/yyyy nhé. nếu ok rồi thì thử cái sau bạn để ý là ngày tháng năm sau khi chuyển qua string nó luôn có chiều dài là 10 nên dùng cái này cho nó dễ, trừ khi năm nay là 10000 nó mới sai, mà yên tâm lúc đó có ngôn ngữ khác rồi sai kệ nó [IMG]images/smilies/biggrin.png[/IMG]

date = DateTime.Parse["1/1/2013akjfhsdajfhalfhljdhsfjasdhlf".Substring[0, 10]];

Có thật là dễ không? 1/1/2013, 01/1/2013, 1/01/2013 và 01/01/2013 là cùng 1 ngày đó, nhưng chiều dài nó khác nhau đấy [8, 9 và 10] [IMG]images/smilies/wink.png[/IMG]

-
  1. > xài ParseExact chi cho khổ vậy

Mã:

System.Globalization.CultureInfo cti = new System.Globalization.CultureInfo["vi-VN"];string t = "17/6/89 9:8:7 ";string t2 = "1/1/ 99";string t3 = "02/3/2000";DateTime date1 = DateTime.Parse[t, cti,DateTimeStyles.None];DateTime date2 = DateTime.Parse[t2, cti,DateTimeStyles.None];DateTime date3 = DateTime.Parse[t3, cti,DateTimeStyles.None];

-
  1. >
    Gửi bởi nguyenvantien87

Xin mọi người giúp. Mình bị sai ở dòng thứ 2. Báo "String was not recognized as a valid DateTime." Thank.

Mã:

string date1 = GridView1.GetRowCellValue[i, "RefDate"].ToString[]; DateTime Date = DateTime.ParseExact[date1,"dd/MM/yy hh:mm:ss tt",null];

bạn nói rõ hơn cái chuỗi trong cái GridView của bạn nó như thế nào được không. cho lên mình xem cái, mình thường Convert trực tiếp nó sang ngày tháng luôn mà. Nếu ở chuỗi đó ở dạng mm/dd/yyyy thì bạn chỉ cần dùng hàm convert.TodateTime là xong. Nếu ở dạng dd/mm/yyyy thì bạn chỉ cần sử lý cái chuỗi này và cho nó về dạng mm/dd/yyyy rồi làm như trên.

Bạn chuyển tới ngày 13/06/2013 lỗi là đúng rồi. Vì đây nó hiểu theo kiểu mm/dd/yyyy làm gì có tháng 13 nên nó chẳng lỗi. Bạn muốn chuyển nó thì cắt cái chuỗi đó ra rồi gép lại thành 06/13/2013 sau đó convert khác được

-
  1. >
    Gửi bởi kenkentrang

bạn nói rõ hơn cái chuỗi trong cái GridView của bạn nó như thế nào được không. cho lên mình xem cái, mình thường Convert trực tiếp nó sang ngày tháng luôn mà. Nếu ở chuỗi đó ở dạng mm/dd/yyyy thì bạn chỉ cần dùng hàm convert.TodateTime là xong. Nếu ở dạng dd/mm/yyyy thì bạn chỉ cần sử lý cái chuỗi này và cho nó về dạng mm/dd/yyyy rồi làm như trên.

Bạn chuyển tới ngày 13/06/2013 lỗi là đúng rồi. Vì đây nó hiểu theo kiểu mm/dd/yyyy làm gì có tháng 13 nên nó chẳng lỗi. Bạn muốn chuyển nó thì cắt cái chuỗi đó ra rồi gép lại thành 06/13/2013 sau đó convert khác được

Dữ liệu ở GridView là "dd/mm/yy hh:mm:ss tt" [value] Trong SQL là "dd/mm/yy hh:mm:ss tt". Cấu hình hệ thống máy tính là : "dd/mm/yy" Mong mọi người giúp.

-
  1. > Bạn cấu hình máy về mặc định đi mm/dd/yyyy cho nó rễ làm. -
  2. > Theo ý mình thì bạn lưu vào csdl định dạng là yyyy-MM-ddThh:mm:ss sau đó ở Client bạn dùng TryParseExact với format truyền vào như trên. sau đó lúc hiện thị bạn dùng out date.ToString['dd/MM/yyyy']; ---

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  • BB code đang Bật
  • Smilies đang Bật
  • code đang Bật
  • code is Bật
  • HTML code đang Tắt

Nội quy - Quy định

Chủ Đề