2010-12-03 82 views
0

J'ai remarqué aujourd'hui que dans mon application twitter sur WP7, les twits sont affichés et leurs temps sont listés. Mais, voici ce que j'ai vraiment aimé:comment formater la date dans divers formats?

Si une twit a été faite dans les dernières secondes, l'élément de la liste affiche par exemple. Il y a 5 secondes. Si elle a été faite dans les dernières minutes, il montre par exemple. Il y a 23 minutes. De la même manière, montre le mot aujourd'hui S'il était à n'importe quelle date antérieure, il montre l'heure réelle.

Ce type de formatage s'applique à n'importe quelle plate-forme (Outlook fait des choses similaires). Est-ce que quelqu'un a écrit une méthode d'extension ou une fonction d'assistance qu'ils peuvent partager pour obtenir ce type de sortie?

Merci, Pratik

Répondre

1

Scott Mitchell avait un article présenté sur la page d'accueil www.asp.net l'autre jour qui couvrait les dates de mise en forme.

L'article était un joli parcours standard des différentes chaînes de formatage que vous pouvez utiliser, mais environ deux tiers dans il discute une méthode personnalisée qu'il a créée pour résoudre ce genre de problème appelé .ToRelativeDateString(). La mise en œuvre est incluse dans l'échantillon téléchargeable ci-joint à l'article:

+0

Parfait. Merci. –

0

Je ne sais pas si vous utilisez java mais PrettyTime est la bibliothèque si vous êtes. Vous pouvez également réaliser cela dans une certaine mesure en utilisant joda-time ou son équivalent .net noda-time. Ci-dessous, par exemple, d'utiliser Joda-temps pour imprimer

Mardi à 14 heures

DateTime dt = new DateTime(2005, 9, 20, 14, 30, 0, 0); 
DateTimeFormatter f = new DateTimeFormatterBuilder() 
.appendLiteral(“On “) 
.appendDayOfWeekText() 
.appendLiteral(“ at “) 
.appendClockhourOfHalfday(1) 
.appendHalfdayOfDayText() 
.toFormatter(); 

String str = f.print(dt); 
// Output: On Tuesday at 2PM 
+0

Pangea, je l'ai dit que j'utilise .NET pour cette application. Merci pour cette information cependant. Je suis sûr que je vais utiliser cela un jour et que quelqu'un d'autre va bénéficier de la lecture de votre réponse. –

+0

si vous êtes dans .NET, vous pouvez utiliser noda-time. la syntaxe est à peu près la même que celle que j'ai montrée. noda-time est une bibliothèque standard alors essayez de faire un petit poc avec ceci et le code de Robin –

0

j'ai écrit un ensemble de classes pour ce qui intègre à l'internationalisation dans .NET. Puisque c'est lié à la culture, vous pouvez facilement avoir différentes variations. Par exemple "10 secondes" si vous êtes anglais, ou "10 sekunder sedan" si vous avez la culture suédoise. C'est si facile.

Vous pouvez le télécharger à l'adresse:

I18n Extensions - .NET4 Library

+0

Robin, j'écris mon application en .NET et ce serait génial si vous pouviez partager ce code. Merci. –

+0

Pratik - J'ai mis à jour mon entrée. J'ai mis la bibliothèque à votre disposition pour téléchargement. –