Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
464 views
in Technique[技术] by (71.8m points)

c# - No DateTime?.ToString(string) overload?

I am aware of the standard procedure for displaying a DateTime in a custom format, like so:

MessageBox.Show(dateSent.ToString("dd/MM/yyyy hh:mm:ss"));

However, when I change the variable from a DateTime to a DateTime? to accept null values, I lose the definition for the ToString(string) overload. I need to use DateTime? as I am reading from a database which potentially has null values - if the field in the database has a null value, then I need to assign the variable a null value too.

So I have two questions:

1) Out of curiosity, does anyone know if there is a reason why DateTime? does not contain an overload for ToString(string)?

2) Could anyone suggest an alternative method for what I am trying to achieve?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

DateTime? is syntactic sugar for Nullable<DateTime> and that's why it don't have ToString(format) overload.

However, you can access underlying DateTime struct using Value property. But before that use HasValue to check, if the value exists.

MessageBox.Show(dateSent.HasValue ? dateSent.Value.ToString("dd/MM/yyyy hh:mm:ss") : string.Empty)

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...