共用方式為


HOW TO:從特定日期擷取一星期的哪一日

更新:2007 年 11 月

.NET Framework 可讓您更容易判斷特殊日期的星期序數日期,以及顯示特殊日期的當地語系化星期名稱。DayOfWeekDayOfWeek 屬性會提供列舉值,該列舉值表示對應特殊日期的星期日期。相反地,擷取星期日期名稱是一項格式化作業,可藉由呼叫格式化方法執行,例如日期和時間值的 ToString 方法或 String.Format 方法。本主題將說明如何執行這些格式化作業。

擷取一個數字,代表特定日期的星期日期

  1. 如果您使用的是日期的字串表示,請使用靜態 DateTime.ParseDateTimeOffset.Parse 方法,將它轉換成 DateTimeDateTimeOffset 值。

  2. 使用 DateTime.DayOfWeekDateTimeOffset.DayOfWeek 屬性擷取 DayOfWeek 值,表示星期的日期。

  3. 如有需要,將 DayOfWeek 值轉型 (於 C# 中) 或轉換 (於 Visual Basic 中) 為整數。

以下範例將顯示一個整數,代表日期字串表示中星期的日期。

Dim dateValue As Date = #6/11/2008#
Console.WriteLine(dateValue.DayOfWeek)           ' Displays 3
DateTime dateValue = new DateTime(2008, 6, 11);
Console.WriteLine((int) dateValue.DayOfWeek);      // Displays 3

從特定日期擷取縮寫的星期日期名稱

  1. 如果您使用的是日期的字串表示,請使用靜態 DateTime.ParseDateTimeOffset.Parse 方法,將它轉換成 DateTimeDateTimeOffset 值。

  2. 您可以擷取目前文化特性或特定文化特性的縮寫星期日期名稱:

    1. 若要擷取目前文化特性的縮寫星期日期名稱,請呼叫日期和時間值的 DateTime.ToString(String)DateTimeOffset.ToString(String) 執行個體方法,然後傳遞字串 "ddd" 做為 format 參數。以下範例將說明 ToString(String) 方法的呼叫。

      Dim dateValue As Date = #6/11/2008#
      Console.WriteLine(dateValue.ToString("ddd"))    ' Displays Wed
      
      DateTime dateValue = new DateTime(2008, 6, 11);
      Console.WriteLine(dateValue.ToString("ddd"));    // Displays Wed
      
    2. 若要擷取特定文化特性的縮寫星期日期名稱,請呼叫日期和時間值的 DateTime.ToString(String, IFormatProvider)DateTimeOffset.ToString(String, IFormatProvider) 執行個體方法。請傳遞字串 "ddd" 做為 format 參數,並傳遞 CultureInfo 或是 DateTimeFormatInfo 物件做為 provider 參數,該物件代表您要擷取其星期日期名稱的文化特性。以下程式碼說明使用代表 fr-FR 文化特性之 CultureInfo 物件的 ToString(String, IFormatProvider) 方法呼叫。

      Dim dateValue As Date = #6/11/2008#
      Console.WriteLine(dateValue.ToString("ddd", _
                        New CultureInfo("fr-FR")))    ' Displays mer.
      
      DateTime dateValue = new DateTime(2008, 6, 11);
      Console.WriteLine(dateValue.ToString("ddd", 
                        new CultureInfo("fr-FR")));    // Displays mer.
      

從特定日期擷取完整的星期日期名稱

  1. 如果您使用的是日期的字串表示,請使用靜態 DateTime.ParseDateTimeOffset.Parse 方法,將它轉換成 DateTimeDateTimeOffset 值。

  2. 您可以擷取目前文化特性或特定文化特性的完整星期日期名稱:

    1. 若要擷取目前文化特性的星期日期名稱,請呼叫日期和時間值的 DateTime.ToString(String)DateTimeOffset.ToString(String) 執行個體方法,然後傳遞字串 "dddd" 做為 format 參數。以下範例將說明 ToString(String) 方法的呼叫。

      Dim dateValue As Date = #6/11/2008#
      Console.WriteLine(dateValue.ToString("dddd"))    ' Displays Wednesday
      
      DateTime dateValue = new DateTime(2008, 6, 11);
      Console.WriteLine(dateValue.ToString("dddd"));    // Displays Wednesday
      
    2. 若要擷取特定文化特性的星期日期名稱,請呼叫日期和時間值的 DateTime.ToString(String, IFormatProvider)DateTimeOffset.ToString(String, IFormatProvider) 執行個體方法。請傳遞字串 "dddd" 做為 format 參數,並傳遞 CultureInfo 或是 DateTimeFormatInfo 物件做為 provider 參數,該物件代表您要擷取其星期日期名稱的文化特性。以下程式碼說明使用代表 es-ES 文化特性之 CultureInfo 物件的 ToString(String, IFormatProvider) 方法呼叫。

      Dim dateValue As Date = #6/11/2008#
      Console.WriteLine(dateValue.ToString("dddd", _
                        New CultureInfo("es-ES")))     ' Displays mircoles.
      
      DateTime dateValue = new DateTime(2008, 6, 11);
      Console.WriteLine(dateValue.ToString("dddd", 
                        new CultureInfo("es-ES")));    // Displays mircoles.
      

範例

此範例說明呼叫 DateTime.DayOfWeekDateTimeOffset.DayOfWeek 屬性以及 DateTime.ToStringDateTimeOffset.ToString 方法,以擷取代表星期日期的數字、縮寫的星期日期名稱,以及特定日期的完整星期日期名稱。

Dim dateString As String = "6/11/2007"
Dim dateValue As Date
Dim dateOffsetValue As DateTimeOffset

Try
   Dim dateTimeFormats As DateTimeFormatInfo
   ' Convert date representation to a date value
   dateValue = Date.Parse(dateString, CultureInfo.InvariantCulture)
   dateOffsetValue = New DateTimeOffset(dateValue, _
                               TimeZoneInfo.Local.GetUtcOffset(dateValue))            
   ' Convert date representation to a number indicating the day of week
   Console.WriteLine(dateValue.DayOfWeek)
   Console.WriteLine(dateOffsetValue.DayOfWeek)

   ' Display abbreviated weekday name using current culture
   Console.WriteLine(dateValue.ToString("ddd"))
   Console.WriteLine(dateOffsetValue.ToString("ddd"))

   ' Display full weekday name using current culture
   Console.WriteLine(dateValue.ToString("dddd"))
   Console.WriteLine(dateOffsetValue.ToString("dddd"))

   ' Display abbreviated weekday name for de-DE culture
   Console.WriteLine(dateValue.ToString("ddd", New CultureInfo("de-DE")))
   Console.WriteLine(dateOffsetValue.ToString("ddd", _
                                              New CultureInfo("de-DE")))

   ' Display abbreviated weekday name with de-DE DateTimeFormatInfo object
   dateTimeFormats = New CultureInfo("de-DE").DateTimeFormat
   Console.WriteLine(dateValue.ToString("ddd", dateTimeFormats))
   Console.WriteLine(dateOffsetValue.ToString("ddd", dateTimeFormats))

   ' Display full weekday name for fr-FR culture
   Console.WriteLine(dateValue.ToString("ddd", New CultureInfo("fr-FR")))
   Console.WriteLine(dateOffsetValue.ToString("ddd", _
                                              New CultureInfo("fr-FR")))

   ' Display abbreviated weekday name with fr-FR DateTimeFormatInfo object
   dateTimeFormats = New CultureInfo("fr-FR").DateTimeFormat
   Console.WriteLine(dateValue.ToString("dddd", dateTimeFormats))
   Console.WriteLine(dateOffsetValue.ToString("dddd", dateTimeFormats))
Catch e As FormatException
   Console.WriteLine("Unable to convert {0} to a date.", dateString)
End Try
' The example displays the following output to the console:
'       1
'       1
'       Mon
'       Mon
'       Monday
'       Monday
'       Mo
'       Mo
'       Mo
'       Mo
'       lun.
'       lun.
'       lundi
'       lundi
string dateString = "6/11/2007";
DateTime dateValue;
DateTimeOffset dateOffsetValue;

try
{
   DateTimeFormatInfo dateTimeFormats;
   // Convert date representation to a date value
   dateValue = DateTime.Parse(dateString, CultureInfo.InvariantCulture);
   dateOffsetValue = new DateTimeOffset(dateValue, 
                                TimeZoneInfo.Local.GetUtcOffset(dateValue));         

   // Convert date representation to a number indicating the day of week
   Console.WriteLine((int) dateValue.DayOfWeek);
   Console.WriteLine((int) dateOffsetValue.DayOfWeek);

   // Display abbreviated weekday name using current culture
   Console.WriteLine(dateValue.ToString("ddd"));
   Console.WriteLine(dateOffsetValue.ToString("ddd"));

   // Display full weekday name using current culture
   Console.WriteLine(dateValue.ToString("dddd"));
   Console.WriteLine(dateOffsetValue.ToString("dddd"));

   // Display abbreviated weekday name for de-DE culture
   Console.WriteLine(dateValue.ToString("ddd", new CultureInfo("de-DE")));
   Console.WriteLine(dateOffsetValue.ToString("ddd", 
                                               new CultureInfo("de-DE")));

   // Display abbreviated weekday name with de-DE DateTimeFormatInfo object
   dateTimeFormats = new CultureInfo("de-DE").DateTimeFormat;
   Console.WriteLine(dateValue.ToString("ddd", dateTimeFormats));
   Console.WriteLine(dateOffsetValue.ToString("ddd", dateTimeFormats));

   // Display full weekday name for fr-FR culture
   Console.WriteLine(dateValue.ToString("ddd", new CultureInfo("fr-FR")));
   Console.WriteLine(dateOffsetValue.ToString("ddd", 
                                              new CultureInfo("fr-FR")));

   // Display abbreviated weekday name with fr-FR DateTimeFormatInfo object
   dateTimeFormats = new CultureInfo("fr-FR").DateTimeFormat;
   Console.WriteLine(dateValue.ToString("dddd", dateTimeFormats));
   Console.WriteLine(dateOffsetValue.ToString("dddd", dateTimeFormats));
}
catch (FormatException)
{
   Console.WriteLine("Unable to convert {0} to a date.", dateString);
}
// The example displays the following output to the console:
//       1
//       1
//       Mon
//       Mon
//       Monday
//       Monday
//       Mo
//       Mo
//       Mo
//       Mo
//       lun.
//       lun.
//       lundi
//       lundi

個別語言提供的函式可能與 .NET Framework 重複,或是補充其提供的函式。例如,Visual Basic 包含兩個這類函式:

  • Weekday 會傳回一個數字,表示特定日期的星期日期。它會將星期第一天的序數視為一,而 DateTime.DayOfWeek 屬性則將該序數視為零。

  • WeekdayName 會傳回目前文化特性中的星期名稱,該名稱對應特殊星期日期數字。

以下範例說明 Visual Basic Weekday 和 WeekdayName 函式的用法。

Dim dateValue As Date = #6/11/2008#

' Get weekday number using Visual Basic Weekday function
Console.WriteLine(Weekday(dateValue))                 ' Displays 4
' Compare with .NET DateTime.DayOfWeek property
Console.WriteLine(dateValue.DayOfWeek)                ' Displays 3

' Get weekday name using Weekday and WeekdayName functions
Console.WriteLine(WeekdayName(Weekday(dateValue)))    ' Displays Wednesday

' Change culture to de-DE
Dim originalCulture As CultureInfo = Thread.CurrentThread.CurrentCulture
Thread.CurrentThread.CurrentCulture = New CultureInfo("de-DE")
' Get weekday name using Weekday and WeekdayName functions
Console.WriteLine(WeekdayName(Weekday(dateValue)))   ' Displays Donnerstag

' Restore original culture
Thread.CurrentThread.CurrentCulture = originalCulture   

您也可以使用 DateTime.DayOfWeek 屬性所傳回的值擷取特定日期的星期名稱。只需要在屬性傳回的 DayOfWeek 上呼叫 ToString 方法即可。然而,此技術不會產生某文化特性的當地語系化的星期名稱,如下面範例所示:

' Change current culture to fr-FR
Dim originalCulture As CultureInfo = Thread.CurrentThread.CurrentCulture
Thread.CurrentThread.CurrentCulture = New CultureInfo("fr-FR")

Dim dateValue As Date = #6/11/2008#
' Display the DayOfWeek string representation
Console.WriteLine(dateValue.DayOfWeek.ToString())     ' Displays Wednesday
' Restore original current culture
Thread.CurrentThread.CurrentCulture = originalCulture
// Change current culture to fr-FR
CultureInfo originalCulture = Thread.CurrentThread.CurrentCulture;
Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR");

DateTime dateValue = new DateTime(2008, 6, 11);
// Display the DayOfWeek string representation
Console.WriteLine(dateValue.DayOfWeek.ToString());   // Displays Wednesday
// Restore original current culture
Thread.CurrentThread.CurrentCulture = originalCulture;

編譯程式碼

這些範例需要:

本範例也需要:

  • 將 System.Core.dll 的參考加入至程式碼範例所在的專案。

請參閱

概念

格式設定 HOW TO 主題

日期和時間格式字串

標準日期和時間格式字串

自訂日期和時間格式字串