Question

Y at-il un moyen facile (peut-être construit en solution) pour convertir TimeSpan à chaîne localisée? Par exemple new TimeSpan(3, 5, 0); serait converti en 3 hours, 5minutes (juste en polonais).

Je peux bien sûr créer ma propre extension:

    public static string ConvertToReadable(this TimeSpan timeSpan) {
        int hours = timeSpan.Hours;
        int minutes = timeSpan.Minutes;
        int days = timeSpan.Days;
        if (days > 0) {
            return days + " dni " + hours + " godzin " + minutes + " minut";
        } else {
            return hours + " godzin " + minutes + " minut";
        }
    }

Mais cela se complique si je veux avoir la grammaire en cause.

Était-ce utile?

La solution

Je ne pense pas que ce soit possible. Qu'est-ce que vous pouvez faire est quelque chose comme ceci:

public static string ConvertToReadable(this TimeSpan timeSpan) { 
    return string.Format("{0} {1} {2} {3} {4} {5}",
        timeSpan.Days, (timeSpan.Days > 1 || timeSpan.Days == 0) ? "days" : "day",
        timeSpan.Hours, (timeSpan.Hours > 1 || timeSpan.Hours == 0) ? "hours" : "hour",
        timeSpan.Minutes, (timeSpan.Minutes > 1 || timeSpan.Minutes == 0) ? "minutes" : "minute");
}

Autres conseils

La meilleure façon de le faire est de mettre la chaîne de format dans une ressource localisée, et traduire de façon appropriée pour chaque langue prise en charge.

Malheureusement, il n'y a aucun moyen standard pour faire une telle chose.

Personne ne semble être d'accord sur ce que devrait être la bonne façon ....: - \

Et les gens comme nous qui écrivent des logiciels pour plusieurs langues souffrent.

Voici le code que je l'ai fait cuire sur:

public static string ConvertToReadable(this TimeSpan timeSpan) {
        int hours = timeSpan.Hours;
        int minutes = timeSpan.Minutes;
        int days = timeSpan.Days;
        string hoursType;
        string minutesType;
        string daysType;
        switch (minutes) {
            case 1:
                minutesType = "minuta";
                break;
            case 2:
            case 3:
            case 4:
                minutesType = "minuty";
                break;
            default:
                minutesType = "minut";
                break;
        }
        switch (hours) {
            case 1:
                hoursType = "godzina";
                break;
            case 2:
            case 3:
            case 4:
                hoursType = "godziny";
                break;
            default:
                hoursType = "godzin";
                break;
        }
        switch (days) {
            case 1:
                daysType = "dzień";
                break;
            default:
                daysType = "dni";
                break;
        }


        if (days > 0) {
            return days + " " + daysType + " " + hours + " " + hoursType + " " + minutes + " " + minutesType;
        }
        return hours + " " + hoursType + " " + minutes + " " + minutesType;
    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top