Konwertuj Łańcuch do DateTime

Muszę przetworzyć następujący łańcuch do obiektu DateTime:
30/Nov/2009:16:29:30 +0100

Czy jest na to łatwy sposób?

PS: chcę przekonwertować powyższy łańcuch tak, jak jest. Okrężnica po roku nie jest literówką. Chcę również rozwiązać problem z Ruby, a nie RoR.

Author: schmijos, 2010-02-04

7 answers

DateTime.strptime pozwala określić format i przekonwertować Łańcuch znaków na DateTime.

 86
Author: Kaleb Brasee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-04 15:28:22

Czy to też nie powinno zadziałać?

"30/Nov/2009 16:29:30 +0100".to_datetime
 76
Author: xentek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-13 20:10:45

Odniosłem sukces z:

require 'time'
t = Time.parse(some_string)
 37
Author: Automatico,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-17 12:43:07

Użyłam Time.parse("02/07/1988"), podobnie jak inne plakaty.

Ciekawostką było to, że Time był ładowany domyślnie po otwarciu IRB, ale {[2] } nie został zdefiniowany. Musiałem to uruchomić.

To z Ruby 2.2.

 14
Author: declan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-04 21:35:01

To przekonwertuje łańcuch w date na datetime:

"05/05/2012".to_time
 8
Author: user1425976,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-30 12:20:57

Dla chińskich programistów Rails:

DateTime.strptime('2012-12-09 00:01:36', '%Y-%m-%d %H:%M:%S')
=> Sun, 09 Dec 2012 00:01:36 +0000
 6
Author: Siwei Shen申思维,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-16 21:33:43

W Rubim 1.8, moduł ParseDate przekonwertuje ten i wiele innych formatów daty/czasu. Jednak nie radzi sobie z okrężnicą między rokiem a godziną. Zakładając, że dwukropek jest literówką i jest w rzeczywistości spacją, to:

#!/usr/bin/ruby1.8

require 'parsedate'

s = "30/Nov/2009 16:29:30 +0100"
p Time.mktime(*ParseDate.parsedate(s))    # =>  Mon Nov 30 16:29:30 -0700 2009
 5
Author: Wayne Conrad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-04 15:39:20