PHP добавляет двоеточие в строку - PullRequest
0 голосов
/ 17 июня 2011

Здравствуйте, у меня есть эта строка, которая будет генерировать время, которое я затем вставлю в БД

$time=mktime(date('G'),date('i'),date('s'));
$NowisTime=date('Gis',$time);

Теперь мне нужно прочитать двоеточия в эту строку: :

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

13:24:09

Вместо:

132409

То же самоедля $todaydate = date('Ymd');

Это должно стать тогда 2011-06-16

Как я могу это сделать?

Подсчет слов не годится, так как мы можем иметь больше или меньше типовв зависимости от фактического времени и даты.

Пожалуйста, сообщите

Спасибо!

ДЛЯ КТО НЕ ПОНИМАЕТ: эти значения взяты из БД, поэтому я не могу использовать: date( 'Ут-d');в значениях, взятых из БД ........

Ответы [ 7 ]

2 голосов
/ 17 июня 2011

Не могли бы вы сделать что-то вроде:

$new = "";
for ($i = 2; $i <= strlen($NowisTime); $i+2) {
    $new .= $NowisTime[$i-2] . $NowisTime[$i-1] . ":";
}
2 голосов
/ 17 июня 2011

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

$timestamp = time();
// store $timestamp in your database

Таким образом, вам не нужно беспокоиться о том, как оно выглядит или вообще его анализировать.Затем, когда вы будете готовы отобразить его для своего пользователя, вы можете использовать:

$formattedTime = date('G:i:s', $timestamp);

, который будет отображать его в колоночном (это даже слово?) Формате для ваших пользователей.

2 голосов
/ 17 июня 2011

Что ж, если вы вместо этого используете date('his') и приводите его как строку (чтобы PHP не интерпретировал его как целое число и не удалял возможный начальный ноль), вы можете добавить двоеточия, разделив строку каждые два числа, а затем взорвавс двоеточиями.

$d = (string)date( 'his' );
echo (int)$d; //Format without colons
echo implode( ':', array_map('intval', str_split( $d, 2 ) ) );

Для второй части сделайте то же самое, за исключением разделения строки на 4 символа, а затем разделите второе разделение на 2.

$d = date('Ymd');
echo $d; //Format without dashes
list($year, $second) = str_split( $d, 4 );
$parts = str_split( $second );
array_unshift( $parts, $year );
echo implode( '-', $parts );

Inоднако в обеих ситуациях было бы проще начать с форматированных строк (с двоеточиями и тире) и удалить их для БД.

$d = date('G:i:s');
echo $d; //With colons
echo str_replace( ':', '', $d );

$d = date('Y-m-d');
echo $d; //With dashes
echo str_replace( '-', '', $d );
2 голосов
/ 17 июня 2011

Если вы делаете именно то, что, как вы говорите, вы делаете, вы можете посчитать символы, начинающиеся с конца, и добавить символы (: и -) в нужном месте:

Оба date('is') и date('Ymd') создают фиксированный формат, используя начальные нули, поэтому длина всегда одинакова.Вам нужно только компенсировать партию date('G').

Так что на самом деле все, что вам нужно сделать, это отрубить 2 символа в конце строки дважды, и остается год или час.

2 голосов
/ 17 июня 2011

Строки, которые вы предоставляете для форматирования, могут содержать все, что вы захотите, так что поставить тире или точку с запятой здесь не проблема. Вы даже можете включить другой текст, если любые буквы, использованные в коде даты, экранируются обратной косой чертой.

Весь

$time=mktime(date('G'),date('i'),date('s'));
$NowisTime=date('Gis',$time);

тоже можно переписать. Вы создаете временную метку текущего времени, а затем присваиваете ей date(). date использует текущее время по умолчанию, поэтому нет необходимости делать это, чтобы показать текущее время.

Вот один из способов:

$NowisTime=date('G:i:s');
2 голосов
/ 17 июня 2011

То же самое для $ todaydate = Дата ( 'Ymd');

Это должно стать потом 2011-06-16

Для этого попробуйте:

date('Y-m-d');

Аналогично для вашей другой части.

Редактировать :: Для даты:

$ time = "время из базы данных"; $ unixtimestamp = strtotime ($ time); $ date = date ('Y-m-d', $ unixtimestamp);

Для времени:

$time = strtotime("time from database"); 
$yourtime = date("H:i:s", $time);
1 голос
/ 17 июня 2011
$NowisTime=date('G:i:s',$time);
$todaydate = date('Y-m-d');
...