繁体   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