簡體   English   中英

如何確定C#中不同文化中的周開始是星期一或星期日

[英]How can I determine that the start of week is Monday or Sunday in different culture in C#

有些國家星期一作為一周的第一天,有些國家使用星期天。 在C#/ .Net中,圖書館全球化可以確定在不同國家開放的當前網頁,但我沒有找到任何有用的方法來確定哪一個國家使用哪一天作為周的開始。

使用此全球化TimeFormat

 var firstDayOfWeek = CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek;

您可以使用文化的DateTimeFormatInfoFirstDayOfWewek屬性

var info = new System.Globalization.CultureInfo("de-DE");
info.DateTimeFormat.FirstDayOfWeek;

如果我理解你的話,你想要從國家代碼 (例如“RU”,“FR”,“DE”等)獲得一周的第一天,而不是來自CultureInfo (這很明顯):

  // Russian culture, Russia
  CultureInfo ci = new CultureInfo("ru-RU");

  var firstDayOfWeek = ci.DateTimeFormat.FirstDayOfWeek;

  // Monday
  Console.Write(firstDayOfWeek);

對於國家/地區代碼而言,這是一項更艱巨的任務:

  // Just Russia given as ISO 2 letters country code
  String CountryCode = "RU";

  var days = CultureInfo.GetCultures(CultureTypes.SpecificCultures)
    .Where(item => item.LCID != 4096) // Cultures without region
    .Where(item => String.Equals(new RegionInfo(item.LCID).Name, 
                                 CountryCode,
                                 StringComparison.OrdinalIgnoreCase))
    .Select(item => item.DateTimeFormat.FirstDayOfWeek)
    .Distinct()
    .ToArray();

  if (days.Length <= 0)
    Console.Write("No such regions found, use default (Sunday?)");
  else if (days.Length == 1)
    Console.Write(days[0]); // <- this will return "Monday"
  else
    Console.Write("Too many variants: " + String.Join(", ", days)); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM