Avatar billede frostholm Praktikant
09. marts 2006 - 19:10 Der er 13 kommentarer og
1 løsning

String to datetime

Hejsa

Jeg skal have konverteret følgende string "Sun Apr 24 20:53:56 2005" til en date time, hvordan gøres det nemmest

Hilsen
Michael Frostholm
Avatar billede arne_v Ekspert
09. marts 2006 - 19:28 #1
har du proevet

DateTime dt = DateTime.Parse(s);

?
Avatar billede casualty Nybegynder
09. marts 2006 - 19:30 #2
Du bliver nødt til at angive en IFormatProvider i parse metoden for at kunne angive typen på datoformatet
Avatar billede casualty Nybegynder
09. marts 2006 - 19:31 #3
Hvor kommer datoen fra?
Avatar billede frostholm Praktikant
09. marts 2006 - 19:39 #5
ja virker ikke, tror ikke den kan forstå mit format
Avatar billede frostholm Praktikant
09. marts 2006 - 19:40 #6
datoen kommer fra en log fil fra spiller Everquest2
Avatar billede frostholm Praktikant
09. marts 2006 - 19:41 #7
jeg har læst det link, men forstår ikke så meget af det, er nemlig ret ny til .Net :-)
Avatar billede arne_v Ekspert
09. marts 2006 - 19:41 #8
Parse gaetter selv formatet og er normalt ret god til det.

Man kan ogssa angive format selv hvis man vil.

Men hvilken fejl faar du ?
Avatar billede frostholm Praktikant
09. marts 2006 - 19:46 #9
System.FormatException was unhandled
  Message="String was not recognized as a valid DateTime."
  Source="mscorlib"
  StackTrace:
      at System.DateTimeParse.Parse(String s, DateTimeFormatInfo dtfi, DateTimeStyles styles)
      at System.DateTime.Parse(String s)
      at EQ2Parser2006.CommandParser.findLastCommandTime() in C:\Documents and Settings\michael\Dokumenter\Visual Studio 2005\Projects\Eq2Parserv1\Eq2Parserv1\Parser.cs:line 64
      at EQ2Parser2006.CommandParser.findCommand() in C:\Documents and Settings\michael\Dokumenter\Visual Studio 2005\Projects\Eq2Parserv1\Eq2Parserv1\Parser.cs:line 85
      at Eq2Parserv1.Form1.openLogfileToolStripMenuItem_Click(Object sender, EventArgs e) in C:\Documents and Settings\michael\Dokumenter\Visual Studio 2005\Projects\Eq2Parserv1\Eq2Parserv1\Form1.cs:line 39
      at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
      at System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
      at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
      at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
      at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
      at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
      at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
      at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
      at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
      at System.Windows.Forms.Control.WndProc(Message& m)
      at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
      at System.Windows.Forms.ToolStrip.WndProc(Message& m)
      at System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
      at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
      at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
      at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
      at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
      at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
      at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
      at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
      at System.Windows.Forms.Application.Run(Form mainForm)
      at Eq2Parserv1.Program.Main() in C:\Documents and Settings\michael\Dokumenter\Visual Studio 2005\Projects\Eq2Parserv1\Eq2Parserv1\Program.cs:line 17
      at System.AppDomain.nExecuteAssembly(Assembly assembly, String[] args)
      at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
      at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
      at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
      at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
      at System.Threading.ThreadHelper.ThreadStart()
Avatar billede frostholm Praktikant
09. marts 2006 - 19:46 #10
koden er kort :

public void findLastCommandTime()
        {
            string pat = @".*?\[(?<tid>.*?)]";
            Regex r = new Regex(pat, RegexOptions.IgnoreCase);

            Match m = r.Match(this.stringToParse);

            if (m.Success)
            {
                //string[] datotid = m.Groups["tid"].Value.Split;
                string tid = m.Groups["tid"].Value;
                // Sun Apr 24 20:53:56 2005
               

                this.LastCommandTime = DateTime.Parse(tid);

            }
        }
Avatar billede arne_v Ekspert
09. marts 2006 - 19:53 #11
der er sikkert flere maader at faa den parset paa

men her er en:

            string s = "Sun Apr 24 20:53:56 2005";
            DateTime dt = DateTime.ParseExact(s, "ddd MMM d HH:mm:ss yyyy", new CultureInfo("en-US", false), DateTimeStyles.AllowWhiteSpaces);
Avatar billede frostholm Praktikant
09. marts 2006 - 20:02 #12
tak arne det virkede
Avatar billede frostholm Praktikant
09. marts 2006 - 20:03 #13
hmmm arne svar lige igen .. kan ikke lige finde udaf at give point .. fik dem hvist selv
Avatar billede arne_v Ekspert
09. marts 2006 - 20:14 #14
for sent - accepteret svar => lukket

http://expfaq.1go.dk/?id=30#giv_flere_point kan anvendes ogsaa til denne slags
situationer
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