разобрать строку даты - PullRequest
2 голосов
/ 23 марта 2011

У меня есть эта строка в переменной сообщения

'03/21/2011'

Мне нужно разобрать его через php и превратить в этот формат

'2011-03-21'

Я использую php, и мне нужен этот формат, чтобы я мог выполнить этот запрос

SELECT prospect as 'Prospect', company as 'Company', industry as 'Industry', created_at as 'Original Date Submitted', software as 'Software', warm_transfer as 'Warm Transfer', UserName as 'Sales Rep' FROM mercury_leads join user on UserID=user_id WHERE created_at BETWEEN '2011-01-01' AND '2011-03-22'

Ответы [ 8 ]

3 голосов
/ 23 марта 2011

Если вы хотите обработать его в PHP, лучше всего использовать функцию strtotime(), которая преобразует строку во время, которое затем можно манипулировать с помощью date() функция.

Итак, вы бы сделали что-то вроде:

$dateStr = date('Y-m-d', strtotime('03/21/2011'));

Хорошая особенность использования strtotime() заключается в том, что вам не нужно беспокоиться о точном формате строки, которую вы передаете. Пока это что-то полуразумное, оно преобразует его.

Таким образом, он будет обрабатывать 03/21/2011 , 3-21-2011 , 03-21-11 без каких-либо изменений или особых случаев.

1 голос
/ 07 апреля 2011

Вы можете увидеть это здесь

http://www.codegod.de/WebAppCodeGod/PHP-convert-string-to-date--AID597.aspx

Или использовать класс Date PHP 5.3

1 голос
/ 23 марта 2011

Хотя есть много способов сделать это, я думаю, что самый простой для понимания и применения ко всем преобразованиям дат:

$date = date_create_from_format('n/d/Y', $date)->format('Y-n-d');

Это явно, и вам никогда не придется задумываться о м / дили д / м и т. д.

1 голос
/ 23 марта 2011
$date = '03/21/2011';
$timestamp = strtotime($date);
$sqlDate = date('Y-m-d', $timestamp);

Это должно делать то, что вам нужно.

StrToTime

дата

1 голос
/ 23 марта 2011

Вы можете разобрать его даже из mysql

select str_to_date('03/21/2011','%m/%d/%Y')
1 голос
/ 23 марта 2011
$items=explode('/','03/21/2011');
$time=mktime(0,0,0,$items[0],$items[1],$items[2]);
$isodate=date('Y-m-d',$time);
0 голосов
/ 09 июня 2014

Ответ 1:

Вы можете использовать что-то вроде этого

$dateStr = date('Y-m-d', strtotime($someDate));

Con

Это не очень хорошо для читабельности кода, потому что не позволяет вам явно анализировать определенный формат и делать это очевидным в коде. Например, ваш код не будет очевиден для стороннего программиста относительно того, в каком формате $ someDate находился, так как strtotime анализирует несколько форматов.

Pro

Однако, если $ someDate может измениться, и вы хотите, чтобы код продолжал пытаться нормализовать различные форматы, это отличный выбор

Con

Если данные поступают в формате, который не поддерживается. Например, при попытке проанализировать дату в формате даты за пределами США, означающем, что месяц и день переключены, но формат использует прямую косую черту (21/04/78) Даты в форматах m / d / y или dmy устраняются путем в разделителе между различными компонентами: если разделитель является косой чертой (/), то предполагается американский m / d / y; тогда как если разделителем является тире (-) или точка (.), то предполагается, что используется европейский формат d-m-y.

Ответ 2:

Чтобы действительно прояснить ваш код относительно того, какую дату вы анализируете, и чтобы убедиться, что данные поступают в правильном формате, я бы использовал date_create_from_format. Вот некоторый код, чтобы помочь:

$server_date_str='06-10-2013 16:00:09';

$server_date_time = DateTime::createFromFormat('d-m-Y H:i:s',$server_date_str);

// check the format 

if ( !($server_date_time instanceof DateTime) ) {

  $error_array = DateTime::getLastErrors();

  throw new Exception( implode(" - ",$error_array['errors']) );

}

//convert DateTime object to Unix time stamp

$server_time = strtotime($server_date_time->format('d-m-Y H:i:s'));

//convert Unix timestamp to date string of the format 2012-10-21
$dateStr = date('Y-m-d', $server_time);

Этот пример более подробно поясняется по этой ссылке:

http://boulderapps.co/parse-a-date-by-a-specific-date-format-in-php

0 голосов
/ 23 марта 2011

STR_TO_DATE (созданный_кат, «% m /% d /% Y») как «Дата отправки отправлена».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...