_mm:dd:yyyy
_という形式のDateTimeオブジェクトから文字列を作成しようとしています。
通常、DateTime
オブジェクトは_mm:dd:yyyy hrs:min:sec AM/PM
_として提供されます。
DateTimeの_hrs:min:sec AM/PM
_部分をすばやく削除して、変換時にToString()
が_mm:dd:yyyy
_のみになるようにする方法はありますか?
質問に答えるには、いいえ-別のタイプで保存する必要があります。最も簡単な選択は、文字列を使用することです。
string date = dateTime.ToString("MM:dd:yyyy");
ただし、日付をプログラム内で文字列として保存しないことも強くお勧めします。これにより、それらの計算や比較が困難になります。さらに、特定のカルチャを日付表現に強制しないことをお勧めします。これは、アプリケーションがおそらく他のカルチャでは期待どおりに機能しないことを意味します。
もう少し洗練されたアプローチは、ToStringをオーバーライドするカスタムクラスを作成することです。ただし、標準ライブラリ関数でタイプを使用することは依然として難しいため、これも回避します。あなたは常に前後に変換する必要があります。
DateTimeのままにして、プレゼンテーションレイヤーでのみ文字列への変換を行います。 DateTime.ToShortDateString
を使用して、ユーザーフレンドリーなカルチャ対応文字列を印刷できます。
datetime DateWithTimeNoSeconds =
DateTime.Now.Date.AddHours(DateTime.Now.Hour).AddMinutes(DateTime.Now.Minute);
現在の日付と時刻の日付を取得し、時間と分を追加します。
DateTime date1 = new DateTime(2008, 6, 1, 7, 47, 0);
Console.WriteLine(date1.ToString());
// Get date-only portion of date, without its time.
DateTime dateOnly = date1.Date;
// Display date using short date string.
Console.WriteLine(dateOnly.ToString("d"));
// Display date using 24-hour clock.
Console.WriteLine(dateOnly.ToString("g"));
Console.WriteLine(dateOnly.ToString("MM/dd/yyyy HH:mm"));
// The example displays the following output to the console:
// 6/1/2008 7:47:00 AM
// 6/1/2008
// 6/1/2008 12:00 AM
// 06/01/2008 00:00
http://msdn.Microsoft.com/en-us/library/system.datetime.date.aspx
通常、私は DateTime.ToShortDateString() を使用してCulture
対応の方法で文字列に変換します。
このようにして、現在のスレッドに設定されているカルチャの現在のフォーマットのみを考慮して、日付をフォーマットできます。
ほとんどの場合、私はMark Byersに同意しますが、1時間単位の細かい日付時刻を保存する必要がある状況がありました。分と秒を保存することは不必要なだけでなく、不正確になります。ユーザーは日付と時間を選択するだけなので、日付と時間はユーザーが選択しますが、分と秒は現在の時刻に設定されます。
この場合、分と秒の削除は非常に簡単です。これがコードです:
scheduledDate = scheduledDate.AddMinutes(
scheduledDate.Minute * -1).AddSeconds(
scheduledDate.Second * -1);
次に、完全な日付時刻としてDBに保存します。分と秒は常に0です。
文字列に変換せずにDateTime
オブジェクトから時間、秒、ミリ秒(0にリセットとして削除)を削除する場合は、Date
プロパティを使用できます。
// Get date-only portion of date, without its time.
var date = DateTime.Now.Date;
以下の例では、Dateプロパティを使用して、DateTime値の日付コンポーネントを抽出し、その時間コンポーネントをゼロ(または0:00:00、または真夜中)に設定しています。
約 DateTime.AddMinutes
(または秒または時間)を追加するのではなく削除する場合は、負の数を追加するだけです!
簡単な方法、おそらく最善ではありませんが
DateTime dt = new DateTime();
dt = DateTime.Now;
string sdate = dt.ToShortDateString();
dt = DateTime.Parse(sdate);
または略して
var dt = DateTime.Parse(DateTime.Now.ToShortDateString());
秒のない日付と時刻の場合、このようなもの:
private DateTime _startTime;
public DateTime StartTime
{
get { return _startTime; }
set
{
_startTime = value.AddSeconds(-value.Second)
.AddMilliseconds(-value.Millisecond);
}
}