10
votes

Trouver des jours de week-end basés sur la culture

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.


2 commentaires

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.


5 Réponses :


0
votes

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.

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.

(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)

Heureusement, cependant, vous venez de faire face à une mouture, plutôt que quelque chose de difficile à mettre en œuvre.

bonne chance!


0 commentaires

3
votes

La seule chose que je sais, c'est comment obtenir le jour de démarrage de la semaine. Peut-être que cela peut aider: xxx

de system.globalization , peut-être que vous trouvez dans ce paquet quelque chose.

Il existe plusieurs classes de calendrier comme JulianCalendar, Hebrewcalendar et ainsi de suite. Il pourrait être possible de trouver ce que vous voulez.


1 commentaires

Cela ne vous aidera pas, car il ne dit pas si cette culture a deux jours comme week-end ou un jour



0
votes

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.

convertisseur de calendrier


0 commentaires

0
votes

Le code ci-dessous fonctionnera jusqu'à 2 jours les 2 derniers jours sont considérés comme des week-ends dans les cultures.

:) xxx

amit Tonk


0 commentaires

4
votes

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;
        }
    }
}


1 commentaires

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