Avatar billede Slettet bruger
19. marts 2008 - 20:07 Der er 17 kommentarer og
1 løsning

Tid og dato

Hello, World!

Jeg skal bruge to funktioner:
- En der kan finde antal milisekunder fra Epoch til nu.
- En der kan omsætte en int til et brugerdefineret tidsformat som String (eller måske omsætte int til et specielt tidsformat og så til String).

Findes funktionerne i C#, og hvad hedder de?

Tak for hjælpen :)
Avatar billede Slettet bruger
19. marts 2008 - 20:10 #1
PS: I PHP hedder funktionerne time() og date() (bortset fra at date() vist kun understøtter datoer og ikke klokkeslet).
Avatar billede arne_v Ekspert
19. marts 2008 - 20:22 #2
DateTime.Now - K

----

(new DateTime(t + K)).ToString(format)
Avatar billede arne_v Ekspert
19. marts 2008 - 20:24 #3
DateTime.Now.Ticks - K

----

(new DateTime(t + K)).ToString(format)
Avatar billede arne_v Ekspert
19. marts 2008 - 20:25 #4
K er saa epoch.Ticks
Avatar billede arne_v Ekspert
19. marts 2008 - 20:37 #5
kode:

using System;

namespace E
{
    public class Program
    {
        public static void Main(string[] args)
        {
            long k = (new DateTime(1970, 1, 1, 0, 0, 0) + TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now)).Ticks;
            long msepoch = (DateTime.Now.Ticks - k) / 10000;
            Console.WriteLine(msepoch);
            DateTime dt = new DateTime(msepoch * 10000 + k);
            Console.WriteLine(dt.ToString("dd/MM/yyyy HH:mm"));
            Console.ReadKey();
        }
    }
}
Avatar billede Slettet bruger
19. marts 2008 - 21:15 #6
Mange tak :)
Du bliver da også mere og mere grundig ;P
Avatar billede Slettet bruger
19. marts 2008 - 21:18 #7
Hmm... Nu har du sgu forvirret mig!
Hvad skal jeg skrive for at få 'DD-MM-YYYY HH:MM:SS' (jeg ved godt, det ikke er korrekt skrevet) ud af integeren TestVar?
Avatar billede arne_v Ekspert
19. marts 2008 - 21:31 #8
"dd-MM-yyyy HH:mm:ss"

tror jeg.

MM er maaned mens mm er minutter.

HH er 24 timers timer mens hh er 12 timers timer.

Hvis jeg husker rigtigt.
Avatar billede Slettet bruger
19. marts 2008 - 21:36 #9
Og hvad skal koden så være? Altså det stykke kode der returnerer tiden som String i 'dd-MM-yyyy HH:mm:ss'-formatet.
Avatar billede arne_v Ekspert
19. marts 2008 - 21:43 #10
Se ovenfor i:

            DateTime dt = new DateTime(msepoch * 10000 + k);
            Console.WriteLine(dt.ToString("dd/MM/yyyy HH:mm"));
Avatar billede Slettet bruger
19. marts 2008 - 21:58 #11
Kan jeg så skrive:
(new DataTime(msepoch * 10000 + k)).ToString("dd/MM/yyyy HH:mm");
for at få den nuværende tid udskrevet? Og jeg forstår stadig ikke, hvor k kommer fra?

Forresten skal jeg jo også bruge et integer, der giver nuværende tidspunkt. Hvordan finder jeg det?
Avatar billede arne_v Ekspert
19. marts 2008 - 22:07 #12
Ja.

k udregnes i:

long k = (new DateTime(1970, 1, 1, 0, 0, 0) + TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now)).Ticks;
           
og er noedvendig fordi .NET ikke har basis i 1970.

msepoch ovenfor:

long msepoch = (DateTime.Now.Ticks - k) / 10000;

indeholder antal millisekunder siden 1970.
Avatar billede Slettet bruger
19. marts 2008 - 22:51 #13
Faktisk skal jeg ikke nødvendigvis bruge en tid fra 1970... Så kan jeg slippe udenom k? :P
Avatar billede arne_v Ekspert
19. marts 2008 - 23:34 #14
Du sagde at du ville have epoch tid som også PHP bruger. Den tager udgangspunkt i 1970.

Hvis du vil bruge .NET's udgangspunkt, så kan du glemme k og 1970 og bare bruge ticks.
Avatar billede Slettet bruger
20. marts 2008 - 10:32 #15
Ja, jeg ved, jeg lød noget tvetydig... Men starttidspunktet er altså ligegyldigt.

Så jeg skal bruge
    MinInt = DataTime.Now.Ticks;
for at finde ticks fra .NET's starttidspunkt?
Og så
    Console.WriteLine((new DataTime(MinInt)).ToString("dd-MM-yyyy HH:mm"));
for at få 20-03-2008 10:32 lige nu?
Avatar billede arne_v Ekspert
20. marts 2008 - 12:44 #16
Ja.
Avatar billede Slettet bruger
20. marts 2008 - 16:03 #17
Whee, nice :)
Bare smid et svar.
Avatar billede arne_v Ekspert
20. marts 2008 - 16:12 #18
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester