2017-01-11 26 views
5

Trong ứng dụng bảng điều khiển của tôi Tôi đang cố định dạng thành HHmmss -> Tôi chắc chắn đó là do loại dữ liệu của tôi nhưng làm cách nào tôi có thể là NULL khi NULL và không hiển thị 1/1/0001 12:00:00 AM?DateTime To NULL khi giá trị là DateTime.MinValue hoặc nó là Null

Đây là cú pháp của tôi

public static DateTime fmtLST; 
public static string LST = null;   
if (LST != null) 
{ 
    IFormatProvider format = System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat; 
    fmtLST = DateTime.ParseExact(LST, "HHmmss", format); 
} 

Console.WriteLine(fmtLST.ToString("hh:mm:ss tt")); 

Nếu thay đổi để public static DateTime? fmtLastScanTime; tôi nhận được một lỗi của

'Không quá tải cho phương pháp 'ToString' mất 1 đối số

Làm thế nào tôi có thể có màn hình này NULL thay vì 1/1/0001 12:00:00 AM? Đang cố gắng tính đến 1/1/0001 12:00:00 SA đang được hiển thị

+0

nếu 'fmtLST' là 'null' sau đó' fmtLST.ToString()' sẽ nâng cao ngoại lệ –

+1

Nhưng nó không bao giờ là null - nó sẽ mặc định là 01/01/0001 12:00:00 SA. Tôi muốn nó trở về NULL không phải là ngày/thời gian mặc định –

Trả lời

0

Có thể nhưng cố gắng này

IFormatProvider format = System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat; 
       fmtLST = DateTime.ParseExact((LST != null ? LST : null), "HHmmss", format); 
+0

Điều đó đã làm được điều đó! Cảm ơn vì điều đó. –

+0

WC:) .......... – Maharshi

3

Ngày giờ dễ vỡ. Một DateTime rỗng có thể là null. Cấu trúc DateTime struct không cung cấp một tùy chọn null. Tuy nhiên, loại "DateTime?" nullable cho phép bạn gán chữ cái rỗng cho kiểu DateTime. Nó cung cấp một mức độ khác biệt.

public static DateTime? fmtLST; 
//or 
public static Nullable<DateTime> fmtLST; 

Một DateTime nullable là cách dễ dàng nhất định bằng cách sử dụng cú pháp dấu hỏi

Edit:

Console.WriteLine(fmtLST != null ? fmtLST.ToString("hh:mm:ss tt") : ""); 

Một số khác có thể là

if(fmtLST == DateTime.MinValue) 
{ 
    //your date is "01/01/0001 12:00:00 AM" 
} 
+0

Tôi sử dụng biến fmtLST để tôi có thể định dạng DateTime.ParseExact (LST, "HHmmss", format); Làm thế nào tôi sẽ định dạng trong ví dụ của bạn? –

+0

@ToastedBreadLeavesYouDead Hãy xem phần đã chỉnh sửa của giải pháp –

+0

Tôi có phải sử dụng "n/a" làm điều kiện khác không? Tôi thay đổi nó để được null cho các điều kiện khác nhưng mà trở lại 12:00:00 AM –

0

Tôi đã tìm thấy này refrence here khi seraching cho cùng một vấn đề

using System; 
using System.Text; 
using System.Windows.Forms; 
namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 
     private void button1_Click(object sender, EventArgs e) 
     { 
      Nullable nullDateTime; 
      //DateTime? nullDateTime = null; 
      nullDateTime = DateTime.Now; 
      if (nullDateTime != null) 
      { 
       MessageBox.Show(nullDateTime.Value.ToString()); 
      } 
     } 
    } 
} 

bạn có thể đi trong liên kết tìm thêm chi tiết Cảm ơn

0

Giá trị 1/1/0001 12:00:00 AM là giá trị tối thiểu/default của đối tượng DateTime, nếu bạn muốn gán null để đối tượng DateTime có nghĩa là bạn phải làm cho họ như Nullable (giống như những người khác được đề xuất). Vì vậy, tuyên bố của fmtLST phải là:

public static DateTime? fmtLST = null; // initialization is not necessary 

Trong trường hợp này, bạn phải quan tâm đến việc in đầu ra cho bảng điều khiển. nó phải được cái gì đó như:

Console.WriteLine(fmtLST.HasValue ? fmtLST.Value.ToString("hh:mm:ss tt") : "Value is null"); 
+0

các điều kiện khác là "Giá trị IS NULL" - Tôi muốn người khác là null. –

+0

Làm thế nào bạn đang có kế hoạch in 'null' trên màn hình?trong 'Console.WriteLine()' –

+0

Tôi đang viết cho bàn điều khiển để xác minh giá trị thực sự là NULL. Những gì kết quả cuối cùng của thủ tục của tôi là, là để cập nhật một bảng SQL Server nơi tôi muốn có một giá trị NULL không phải là giá trị Min.Date –

Các vấn đề liên quan