Standaard DateTime Format c#

Is er een manier van instelling of het overschrijven van de standaard DateTime formaat voor een volledige applicatie. Ik ben het schrijven van een applicatie in C# .Netto MVC 1.0 en gebruik veel van generieke geneesmiddelen en reflectie. Zou het veel eenvoudiger zijn als ik kon overschrijven van de standaard Datum en tijd.ToString() de indeling “dd-MMM-jjjj”. Ik wil niet dat dit formaat te wijzigen wanneer de site wordt beheerd op een andere machine.

Bewerken –
Gewoon om te verduidelijken, ik bedoel specifiek het aanroepen van de methode ToString, niet van een andere extensie functie, dit is het gevolg van de reflectie /gegenereerde code. Gemakkelijker zou zijn om gewoon de ToString-uitgang.

 

6 Replies
  1. 51

    De “standaard opmaak” van een datum en tijd is:

    ShortDatePattern + ' ' + LongTimePattern

    althans in de huidige mono uitvoering.
    Dit is vooral pijnlijk in het geval u wilt iets als 2001-02-03T04:05:06Z dat wil zeggen de datum en tijd in combinatie als bedoeld in ISO 8606 vervangen, maar niet een groot probleem in uw geval:

    using System;
    using System.Globalization;
    using System.Threading;
    
    namespace test {
        public static class Program {
            public static void Main() {
                CultureInfo culture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
                culture.DateTimeFormat.ShortDatePattern = "dd-MMM-yyyy";
                culture.DateTimeFormat.LongTimePattern = "";
                Thread.CurrentThread.CurrentCulture = culture;
                Console.WriteLine(DateTime.Now);
            }
        }
    }

    Dit zal het standaard gedrag van ToString op datetimes om terug te keren de indeling die u verwacht.

    • Bedankt voor het antwoord, waar dient deze code in een .Netto MVC 1.0 project, ik heb het geprobeerd in de weergave en het werkt, maar niet in de wereld.asax
    • Wat bedoel je met “in het zicht”? En wat heb je in de wereld.asax precies?
    • Als ik <% CultureInfo-cultuur = (CultureInfo -) CultureInfo.CurrentCulture.Clone(); cultuur.DateTimeFormat.ShortDatePattern = “dd-MMM-jjjj”; cultuur.DateTimeFormat.LongTimePattern = “”; Draad.CurrentThread.CurrentCulture = cultuur; %> op de bovenkant van de Weergave het indelingen alle DateTimes op de pagina correct. Maar toen ik die code in de methoden application_start van de wereld.asax het werkt niet. Ik neem aan dat dit te maken heeft met de multiple threading van de aanvragen in IIS. Waar is de beste plek om deze code om invloed op mijn hele site.
    • Ik zou proberen Deapplication_beginrequestde, maar ik denk dat je beter een nieuwe vraag stellen…
    • Dit is een goed antwoord. Het enige probleem is dat een ruimte wordt toegevoegd aan het einde. Is er een manier hoe te verwijderen die ruimte? ShortDatePattern + ” + LongTimePattern
  2. 8

    Het is afhankelijk van uw toepassing lokalisatie-instellingen. Dat veranderen dienovereenkomstig om juiste formaat.

    Anders een helper-klasse of een extensie-methode die altijd werkt met uw DateTime.

    public static string ToMyDateTime(this DateTime dateTime) {
        return dateTime.ToString("dd-MMMM-yy");
    }
  3. 1

    Als u zeker wilt zijn dat uw cultuur blijft hetzelfde, alleen deze zelf instellen om te voorkomen dat problemen.

    System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("nl-BE");
    System.Threading.Thread.CurrentThread.CurrentCulture = ci;
    System.Threading.Thread.CurrentThread.CurrentUICulture = ci;

    Het bovenstaande voorbeeld wordt de cultuur van de draad aan de Belgisch-nederlandse.

    CurrentCulture doet al de datum en tijd van behandeling en CurrentUICulture handgrepen UI lokalisatie als middelen.

  4. 0

    Ik weet niet zeker of dit zou werken voor een web-app, maar je zou kunnen proberen om de DateTimeFormat eigendom voor van de huidige cultuur.

    Controleren dit en speciaal dit.

  5. -1

    U kunt een ExtensionMethod zoals deze:

    public static string ToMyString(this DateTime dateTime)
    {
      return dateTime.ToString("needed format");
    }

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *