Y a-t-il un moyen de trouver les jours qui constituent un week-end ou une semaine de travail basée sur différentes cultures à l'aide du framework .NET? Par exemple, certains pays musulmans ont une semaine de travail du dimanche au jeudi. P>
5 Réponses :
Je ne vais pas vous donner une réponse .NET, mais je dirai que vous ne le basez pas sur la "culture", mais plutôt sur le pays. P>
Vous pouvez obtenir un pays ip avec un degré de précision de la précision (mais cela ne sera jamais 100%). Après cela, je suggérerais beaucoup de googling, car je doute que vous alliez trouver le code déjà écrit. P>
(Vous pouvez également examiner certains programmes de calendrier / rendez-vous open source, notamment largement utilisés, comme sur Linux, ou peut-être la foudre, le plug-in de Thunderbird. Si vous ouvrez par leur code, vous pouvez trouver les données pour Ceci) p>
Heureusement, cependant, vous venez de faire face à une mouture, plutôt que quelque chose de difficile à mettre en œuvre. P>
bonne chance! p>
La seule chose que je sais, c'est comment obtenir le jour de démarrage de la semaine. Peut-être que cela peut aider: de Il existe plusieurs classes de calendrier comme system.globalization code>, peut-être que vous trouvez dans ce paquet quelque chose. P>
JulianCalendar, Hebrewcalendar Code> et ainsi de suite. Il pourrait être possible de trouver ce que vous voulez. p> p>
Cela ne vous aidera pas, car il ne dit pas si cette culture a deux jours comme week-end ou un jour
a trouvé la question intéressante - n'a pas eu de réponse moi-même. Mais localement une ressource intéressante - discuter également de calendriers. P>
Le code ci-dessous fonctionnera jusqu'à 2 jours les 2 derniers jours sont considérés comme des week-ends dans les cultures.
:) p> amit Tonk H2> P >
Personne n'avait une solution pour cela, donc j'en ai écrit un. Cela utilise le pays pour déterminer si une journée est une journée de travail, week-end ou 1/2 journée de travail (samedi dans certains pays). Il y a une certaine ambiguïté en cela comme au Mexique, 1/2 jour samedi est "coutumier" mais pas officiel. Pour des cas comme celui-ci, je l'ai défini comme temps de travail.
Cela couvre tout sauf 3 provinces en Malaisie, qui sont différentes du reste de la Malaisie. Afaik, cultureinfo.name n'a pas de valeur distincte pour ces 3 provinces. Le pays le plus intéressant, le Brunéi où le week-end est vendredi et dimanche, avec samedi une journée de travail. P>
code est téléchargeable en tant que projet à est-ce le week-end ? Code principal ci-dessous: P>
using System; using System.Globalization; namespace windward { /// <summary> /// Extensions for the CultureInfo class. /// </summary> public static class CultureInfoExtensions { /// <summary> /// The weekday/weekend state for a given day. /// </summary> public enum WeekdayState { /// <summary> /// A work day. /// </summary> Workday, /// <summary> /// A weekend. /// </summary> Weekend, /// <summary> /// Morning is a workday, afternoon is the start of the weekend. /// </summary> WorkdayMorning } /// <summary> /// Returns the English version of the country name. Extracted from the CultureInfo.EnglishName. /// </summary> /// <param name="ci">The CultureInfo this object.</param> /// <returns>The English version of the country name.</returns> public static string GetCountryEnglishName(this CultureInfo ci) { string[] parts = ci.EnglishName.Split(new[] {'(', ')'}, StringSplitOptions.RemoveEmptyEntries); if (parts.Length < 2) return ci.EnglishName; parts = parts[1].Split(new[] {','}, StringSplitOptions.RemoveEmptyEntries); return parts[parts.Length - 1].Trim(); } /// <summary> /// Returns the English version of the language name. Extracted from the CultureInfo.EnglishName. /// </summary> /// <param name="ci">The CultureInfo this object.</param> /// <returns>The English version of the language name.</returns> public static string GetLanguageEnglishName(this CultureInfo ci) { string[] parts = ci.EnglishName.Split(new[] {'('}, StringSplitOptions.RemoveEmptyEntries); return parts[0].Trim(); } /// <summary> /// Return if the passed in day of the week is a weekend. /// /// note: state pulled from http://en.wikipedia.org/wiki/Workweek_and_weekend /// </summary> /// <param name="ci">The CultureInfo this object.</param> /// <param name="day">The Day of the week to return the stat of.</param> /// <returns>The weekday/weekend state of the passed in day of the week.</returns> public static WeekdayState IsWeekend(this CultureInfo ci, DayOfWeek day) { string[] items = ci.Name.Split(new[] {'-'}, StringSplitOptions.RemoveEmptyEntries); switch (items[items.Length - 1]) { case "DZ": // Algeria case "BH": // Bahrain case "BD": // Bangladesh case "EG": // Egypt case "IQ": // Iraq case "IL": // Israel case "JO": // Jordan case "KW": // Kuwait case "LY": // Libya // Northern Malaysia (only in the states of Kelantan, Terengganu, and Kedah) case "MV": // Maldives case "MR": // Mauritania case "NP": // Nepal case "OM": // Oman case "QA": // Qatar case "SA": // Saudi Arabia case "SD": // Sudan case "SY": // Syria case "AE": // U.A.E. case "YE": // Yemen return day == DayOfWeek.Thursday || day == DayOfWeek.Friday ? WeekdayState.Weekend : WeekdayState.Workday; case "AF": // Afghanistan case "IR": // Iran if (day == DayOfWeek.Thursday) return WeekdayState.WorkdayMorning; return day == DayOfWeek.Friday ? WeekdayState.Weekend : WeekdayState.Workday; case "BN": // Brunei Darussalam return day == DayOfWeek.Friday || day == DayOfWeek.Sunday ? WeekdayState.Weekend : WeekdayState.Workday; case "MX": // Mexico case "TH": // Thailand if (day == DayOfWeek.Saturday) return WeekdayState.WorkdayMorning; return day == DayOfWeek.Saturday || day == DayOfWeek.Sunday ? WeekdayState.Weekend : WeekdayState.Workday; } // most common Saturday/Sunday return day == DayOfWeek.Saturday || day == DayOfWeek.Sunday ? WeekdayState.Weekend : WeekdayState.Workday; } } }
Donc c'est mieux? Par défaut: lancer une nouvelle notimplementeedException (); , ou // le plus commun samedi / dimanche retour jour == Dayofeek.Saturday || Day == DayoFeek.sunday? Weekdaystate.weekend: weekdaystate.workday; Parce que c'est commun? Je veux dire à quel point il est courant
Je pense que .NET Framework ne prend pas en charge cette fonctionnalité. Vous devez mettre en œuvre avec votre propre modèle.
Une question similaire était posée si .NET prend déjà en charge cette . La réponse est que ce n'est pas; Vous devrez rouler votre propre.