[c#] DateTime format string anders formatten

Pagina: 1
Acties:

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 06-03 20:19

_Thanatos_

Ja, en kaal

Topicstarter
Ik heb een DateTime format string, bijvoorbeeld "yyyy-mm-dd" en die moet op een arbitraire manier vertaald worden naar een datum. Wat er in mijn geval moet gebeuren, is dat om ieder 'element' van de datum, dus jaar of dag of uur of wat dan ook, een HTML-tag gezet moet worden.

Nu kan ik dat wel in de formatstring gaan harken, maar dat is allesbehalve netjes, en er moet vanalles escaped worden. En DateTime heeft geen escape() methode om dat netjes doen. Tweede optie is om zelf een parser te schrijven die samen met de CultureInfo er wat van maakt. Derde en meest elegante optie is dat ik een class op de een of andere manier inherit, die dat al kan. Voor de laatste mogelijk zag ik weer 2 opties: of ik maak een class die IFormatProvider implementeert, maar daar zit niet voldoende in; geen methodes om een numeriek datumelement om te zetten bijvoorbeeld. Tweede optie is (was) om de class DateTimeFormat te inheriten, maar dat is een internal class...

Advies? :)

日本!🎌


  • CaptBiele
  • Registratie: Juni 2002
  • Laatst online: 27-08-2021

CaptBiele

No Worries!

ehm. zoals ik je verhaaltje lees kan je het beste voor de IFormatProvider gaan. Dit is imo de netste oplossing, en je zult toch je eigen implementaties moeten geven. Ik denk niet dat er een classe is die dit soort functionaliteit al in zich heeft...

moet er bij vermelden dat ik niet veel ervaring hiermee heb :Z

  • riezebosch
  • Registratie: Oktober 2001
  • Laatst online: 04-05 13:09
yyyy-mm-dd lijkt me vrij standaard notatie (amerikaans). Kun je dus volgens mij ook redelijk eenvoudig naar een DateTime converteren (met bijvoorbeeld de Convert class). En dan kan je alle elementen toch zo één voor één er weer uit plukken en er HTML-tags omheen zetten?

Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 06-03 20:19

_Thanatos_

Ja, en kaal

Topicstarter
Ok, IFormatProvider dus. Misschien enige hulp in hoe dit aan te pakken? Want ik zie dus dat de enige member dan die interface is GetFormat() en die hoeft vrij weinig te doen. Wat moet ik nou precies implementeren in een IFormatProvider object? Een ICustomFormatter erbij zie ik in een sample, maar dat betekent dus dat ik een hele eigen DateTime formatter moet gaan schrijven?

En riezebosch, yyyy-mm-dd is maar een voorbeeld. Het formaat staat volledig open, dus kan evengoed "yyyy|dd|mm hh.nn.ss (dddd, mmmm)" zijn, om maar wat bizars te noemen.

日本!🎌


  • GrimaceODespair
  • Registratie: December 2002
  • Laatst online: 00:07

GrimaceODespair

eens een tettenman, altijd ...

Ik heb er ook niet veel ervaring mee, maar ik dacht dat in de Culture objecten IFormatProviders zaten voor dit soort dingen. Maar misschien sla ik de plank wel helemaal mis :)

Wij onderbreken deze thread voor reclame:
http://kalders.be


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 06-03 20:19

_Thanatos_

Ja, en kaal

Topicstarter
Ik denk dat je er naast slaat ja. CultureInfo heeft inderdaad verschillende objecten die formattering doen, maar ik wil dus een eigen formatter bouwen. Nu blijkt dus dat voor DateTime *moet* je een DateTimeFormatInfo class teruggeven. En als ik die nou kon inheriten, was er niets aan de hand, maar hij is dus sealed :(

/edit
Precies mijn probleem: http://groups.google.com/...%40news.bluewin.ch&rnum=1

[ Voor 21% gewijzigd door _Thanatos_ op 14-07-2005 10:23 ]

日本!🎌


  • CaptBiele
  • Registratie: Juni 2002
  • Laatst online: 27-08-2021

CaptBiele

No Worries!

Maar dat Culture gedoe zorgt ervoor dat je datum op een specifieke manier geconverteerd wordt. Ik las net dat het formaat van alles kan zijn... Volgens mij moet je dan eerst proberen een conversie te doen naar DateTime, om gewoon te controleren of het formaat geldig is. Op dat moment kun je ook de onderdelen benaderen, zoals dagen en uren.
Dat met die HTML tags zal je toch echt zelf moeten schrijven. Er zit niets anders op....
Pagina: 1