Avatar billede maartiinn Nybegynder
10. januar 2009 - 21:54 Der er 14 kommentarer og
2 løsninger

Hvordan henter jeg klokken fra computeren?

Hej.
Jeg skal i skolen lave en consol-applikation i C# som jeg gerne vil have til at hente klokken fra computeren.
Alt efter hvad klokken er skal der køres forskellige switch-case´s der gentager sig selv ved hjælp af while(true).

Spørgsmålet er: Hvordan henter jeg klokken fra computeren? og udskriver det til consollen?
Har system.DateTime noget med det at gøre?


Ps jeg er absolut begynder så håber svaret kan holdes i begynder-sprog:)
Mvh Martin
Avatar billede Syska Mester
10. januar 2009 - 22:18 #1
Console.WriteLine("Klokken er: {0}", DateTime.Now.ToLongTimeString());

DateTime.Now indeholder alverdens properties om klokken og datoen etc.
Avatar billede maartiinn Nybegynder
11. januar 2009 - 01:50 #2
Tak buzzzz, så har jeg klokken men jeg har stadig ikke regnet ud hvordan jeg får sammenlignet klokken så den starter de forskellige case´s

feks
case'1' hvis klokken er mellem 01:00:00 og 05:59:59
case'2' hvis klokken er mellem 06:00:00 og 09:59:59
osv

nogen bud?
Avatar billede Syska Mester
11. januar 2009 - 11:49 #3
Case vil have en constant, så du kan ikke helt gøre det på den med ...

Du skal nok ud i noget if else ...

if(time.Hour >= 1 && time.Hour < 6)
            {
                Console.WriteLine("Klokken er mellem 1 og 6");
            }
Avatar billede websmith Nybegynder
11. januar 2009 - 12:53 #4
int hour = DateTime.Now.Hour;

switch(hour)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
  Console.WriteLine("Det er nat");
  break;
case 6:
case 7:

etc....

}
Avatar billede Syska Mester
11. januar 2009 - 15:25 #5
ja ... også en mulighed ... min hjerne må være slidt efter en weekend med eksamens læsning :-)

// ouT
Avatar billede maartiinn Nybegynder
11. januar 2009 - 19:07 #6
websmith!  Hvad er det jeg mangler for at case´n starter?

Det er tiden jeg gerne vil ha´ til at være afgørende for hvilken case der startes.
Lad os sige jeg gerne vil have startet case 5 i dit eksempel. Hva skal klokken så være? Det er vel ikke defineret endnu, eller hva??

Mvh
Den forvirrede
Avatar billede websmith Nybegynder
11. januar 2009 - 19:43 #7
Hvis du kigger på koden, så er der en variabel kaldet hour.

Den er afhængig af timen på døgnet, så switch statementet arbejder på timen i døgnet, dvs. imellem kl 5 og 6 så vil "case 5" blive aktiveret osv.

Det burde være en smal sag at lige putte de andre ting ind.

Hvis du vil have forskellige handliger for hver time, lader du bare være med at lade case statements falde igennem, dvs. du putter en break; ind imellem alle statements.

ex.
switch(hour)
{
case 0:
  Console.WriteLine("Klokken er imellem 0 og 1");
  break;
case 1:
  Console.WriteLine("Klokken er imellem 1 og 2");
  break;
case 2:
  Console.WriteLine("Klokken er imellem 2 og 3");
  break;
case 3:
  Console.WriteLine("Klokken er imellem 3 og 4");
  break;
case 4:
  Console.WriteLine("Klokken er imellem 4 og 5");
  break;
case 5:
  Console.WriteLine("Klokken er imellem 5 og 6");
  break;
}

Jeg håber det var svar nok, ellers spørg bare igen :)
Avatar billede maartiinn Nybegynder
11. januar 2009 - 20:37 #8
Da min kode er alt for lang til at skrive her har jeg prøvet at få det til at virke i nedenstående eksempel.
Jeg har ændret tiden på min computer til ca 2:30
Når jeg kører det skriver den
Klokken er: 02:30:40
i min consol på grund af

Console.WriteLine("Klokken er: {0}", DateTime.Now.ToLongTimeString());

men den bør vel også skrive case 2 (hvis denne er startet) på grund af denne
case '2':
Console.WriteLine("case 2");
break;

eller hva??


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int hour = DateTime.Now.Hour;

            Console.WriteLine("Klokken er: {0}", DateTime.Now.ToLongTimeString());

            switch (hour)
            {
                case '1':
                    Console.WriteLine("case 1");
                    break;

                case '2':
                    Console.WriteLine("case 2");
                    break;

                case '3':
                    Console.WriteLine("case 3");
                    break;
                   
            }
            Console.ReadKey();
        }
    }
}
Avatar billede Syska Mester
11. januar 2009 - 21:03 #9
uden at være sikker ... så fjern '' omkring dine tal ... '' angiver at det er en "char".

// ouT
Avatar billede websmith Nybegynder
11. januar 2009 - 21:31 #10
Ja, det er korrekt, din case statement skal være:

case 1:
case 2:
case 3:

Den eneste grund til at du ikke for en compilerfejl er at en char implicit også er en byte, og en byte kan castes til en int. men værdien '1' er faktisk 31, 2=32 osv.

Så hvis du ændrer det til case 1: osv, så skal du se :)
Avatar billede maartiinn Nybegynder
11. januar 2009 - 21:55 #11
hmm...har prøvet nu men jeg kan stadig ikke få det til at virke?
Avatar billede websmith Nybegynder
11. januar 2009 - 22:39 #12
smid lige din kode som ikke fungerer, så kan jeg rette den til.
Avatar billede maartiinn Nybegynder
11. januar 2009 - 22:56 #13
Har fået det til at virke nu.

Det skal jo være
case 01
case 02
osv

Så vil jeg prøve om jeg kan få det til at virke i min kode.
Tak for jeres hjælp
Avatar billede websmith Nybegynder
12. januar 2009 - 08:25 #14
Det giver ikke rigtig mening - men hvad - det vigtigst er jo at det fungerer :)
Avatar billede maartiinn Nybegynder
12. januar 2009 - 13:29 #15
Nej, det var nok ikke derfor alligevel men mærkeligt nok virkede det først da jeg satte nullerne foran. Nu virker det også uden nuller? anyway

Har i fået point?

Jeg nu sat endnu en
Console.WriteLine("Klokken er: {0}", DateTime.Now.ToLongTimeString());
ind nederst efter case´s men hvordan får jeg den til at starte case 2  feks hvis jeg har kørt den klokken 1 og klokken imellemtiden er blevet 2.

Skal jeg oprette en ny tråd til dette spørgsmål?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int hour = DateTime.Now.Hour;

            Console.WriteLine("Klokken er: {0}", DateTime.Now.ToLongTimeString());

            switch (hour)
            {
                case 1:
                    Console.WriteLine("case 1");                   
                   
                    break;


                case 2:
                    Console.WriteLine("case 2");
                   
                    break;

                case 3:
                    Console.WriteLine("case 3");
                   
                    break;

            }
            Console.SetCursorPosition(0, 5);
            Console.WriteLine("Klokken er: {0}", DateTime.Now.ToLongTimeString());
            Console.ReadKey();
        }
    }
}
Avatar billede Syska Mester
13. januar 2009 - 03:01 #16
websmith:
http://asciitable.com/

0 er 48
1 er 19
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