конвертировать строку в DateTime

Мне нужно проанализировать следующую строку в объект DateTime:
30/Nov/2009:16:29:30 +0100

Есть ли простой способ сделать это?

PS: Я хочу преобразовать приведенную выше строку как есть. Двоеточие после года не опечатка. Я также хочу решить проблему с Ruby, а не с RoR.

85 голосов | спросил SkaveRat 4 FebruaryEurope/MoscowbThu, 04 Feb 2010 18:24:47 +0300000000pmThu, 04 Feb 2010 18:24:47 +030010 2010, 18:24:47

7 ответов


0

DateTime.strptime позволяет укажите формат и преобразуйте строку в DateTime.

ответил Kaleb Brasee 4 FebruaryEurope/MoscowbThu, 04 Feb 2010 18:28:22 +0300000000pmThu, 04 Feb 2010 18:28:22 +030010 2010, 18:28:22
0

Разве это не должно работать?

"30/Nov/2009 16:29:30 +0100".to_datetime
ответил xentek 14 MaramWed, 14 Mar 2012 00:10:45 +04002012-03-14T00:10:45+04:0012 2012, 00:10:45
0

У меня был успех с:

require 'time'
t = Time.parse(some_string)
ответил Automatico 17 PMpThu, 17 Apr 2014 16:43:07 +040043Thursday 2014, 16:43:07
0

Я использовал Time.parse("02/07/1988"), как и некоторые другие постеры.

Интересно, что Time загружался по умолчанию при открытии IRB, но Time.parse не было определено. Мне пришлось require 'time', чтобы заставить его работать.

Это с Ruby 2.2.

ответил declan 5 AM000000120000000131 2015, 00:35:01
0

Это преобразует строку в дате в дату и время:

"05/05/2012".to_time
ответил user1425976 30 Maypm12 2012, 16:19:05
0

Для китайских разработчиков Rails:

DateTime.strptime('2012-12-09 00:01:36', '%Y-%m-%d %H:%M:%S')
=> Sun, 09 Dec 2012 00:01:36 +0000
ответил Siwei Shen 申思维 12 MonEurope/Moscow2016-12-12T05:04:27+03:00Europe/Moscow12bEurope/MoscowMon, 12 Dec 2016 05:04:27 +0300 2016, 05:04:27
0

в Ruby 1.8 модуль ParseDate преобразует этот и многие другие форматы даты /времени. Тем не менее, он не имеет дело с толстой кишкой между годом и часом. Если предположить, что двоеточие является опечаткой и фактически является пробелом, то:

#!/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
ответил Wayne Conrad 4 FebruaryEurope/MoscowbThu, 04 Feb 2010 18:39:20 +0300000000pmThu, 04 Feb 2010 18:39:20 +030010 2010, 18:39:20

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132