web-dev-qa-db-fra.com

Comment extraire uniquement la valeur 'Day' de la chaîne complète 'Date'?

J'ai un tableau de valeurs de date dans le format de 'Y-m-d'. Je veux parcourir le tableau et extraire uniquement le jour ('d') de chaque membre, mais je ne peux pas le scinder. Est-ce que j'utilise des sous-chaînes d'une certaine manière?

Dit simplement, j'ai '2010-11-24', et je veux juste en tirer '24'. Le problème du jour pourrait être simple ou double.

24
Jack Roscoe

Si vous avez PHP <5.3, utilisez strtotime() :

$string = "2010-11-24";
$timestamp = strtotime($string);
echo date("d", $timestamp);

Si vous avez PHP> = 5.3, utilisez une solution basée sur DateTime en utilisant createFromFormat - DateTime est l’avenir et peut traiter des dates supérieures à 1900 et 2038:

 $string = "2010-11-24";
 $date = DateTime::createFromFormat("Y-m-d", $string);
 echo $date->format("d");
63
Pekka 웃
$date = '2010-11-24';
list($y, $m, $d) = explode('-', $date);

Démo , docs sur explode() .

Ou même

$date = '2010-11-24';
$d = substr($date, strrpos($date, '-') + 1);

Démo , docs sur substr() et strrpos() .

Disclaimer: Les deux sont oldschool!

5
jensgram

$ dt = "2008/02/23";

echo "Le jour est". date ("d", strtotime ($ dt)); 

0
njoshsn
$string = "2010-11-24";
$date = new DateTime($string);
echo date_format($date, 'd');
0
Frank Muñoz

Essayez d’utiliser date_parse_from_format , par exemple:

date_parse_from_format('Y-m-d', '2010-11-24')['day'];

Test en shell:

$ php -r "echo date_parse_from_format('Y-m-d', '2010-11-24')['day'];"
24
0
kenorb
php> $d = '2010-11-24';
'2010-11-24'
php> $fields = explode('-', $d);
array (
  0 => '2010',
  1 => '11',
  2 => '24',
)
php> $fields[2];
'24'
0
Marek Augustyn
<?php

$dates = array('2010-01-01', '2010-01-02', '2010-01-03', '2010-01-23');

foreach ($dates as $date) {
    $day[] = substr($date, 8, 2);
}

var_dump($day);

?>
0
martynthewolf