PHP - Mostrar nombre del mes en español

 
Vista:

Mostrar nombre del mes en español

Publicado por Anthony (2 intervenciones) el 16/09/2019 17:39:35
Hola, tengo un código el cual evita mostrar el año del mes de start_date si es igual al de end_date.
El problema es que me muestra las fechas sólo en inglés.
No encuentro la forma de hacerlo funcionar con setlocale

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php
require_once 'connected.php';
	$result;
	$conn = dbConnect();
	$sql = 'SELECT start_date, end_date FROM activeDates';
	$result = $conn->query($sql);
	$rows = $result->fetchall();
 
 ?>
	<div class="table-responsive">
	<table>
						<thead>
							<tr>
								<th></th>
								<th>Dates</th>
 
							</tr>
						</thead>
 
		<tbody>
		<?php
			foreach ($rows as $row) {
		?>
 
							<tr>
								<td>
 
					 <?php
    $start=new DateTime($row['start_date']);
    $startDay=$start->format('j');
    $startMonth=$start->format('F');
    $startYear=$start->format ('Y');
    $end=new DateTime($row['end_date']);
    $endDay=$end->format('j');
    $endMonth=$end->format('F');
    $endYear=$end->format('Y');
 
    $s=(
        ($startMonth == $endMonth && $startYear==$endYear) ? "$startDay $startMonth till $endDay $endMonth $startYear" :
            ( ($startMonth!==$endMonth && $startYear==$endYear) ? "$startDay $startMonth till $endDay $endMonth $startYear" :
                ( ($startMonth==$endMonth && $startYear!==$endYear) ? "$startDay $startMonth $startYear till $endDay $endMonth $endYear" :
                                                                     "$startDay $startMonth $startYear till $endDay $endMonth $endYear"
                )
             )
        );
    echo $s.PHP_EOL;
                    ?>
								</td>
							</tr>
 
		<?php } ?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kathyu
Val: 1.670
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Mostrar nombre del mes en español

Publicado por Kathyu (455 intervenciones) el 16/09/2019 18:14:49
1
2
3
4
5
6
7
setlocale(LC_ALL, 'es_ES');
$monthNum  = 2;
$dateObj   = DateTime::createFromFormat('!m', $monthNum);
$monthName = strftime('%B', $dateObj->getTimestamp());
echo $monthName;
 
// Retorna February

1
2
3
4
5
6
7
setlocale(LC_ALL, 'spanish');
$monthNum  = 2;
$dateObj   = DateTime::createFromFormat('!m', $monthNum);
$monthName = strftime('%B', $dateObj->getTimestamp());
echo $monthName;
 
// Retorna Febrero

Probado en por mi y funciona 100% (al menos a mi )
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de kip
Val: 2.949
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Mostrar nombre del mes en español

Publicado por kip (876 intervenciones) el 16/09/2019 18:34:03
Asumo que estas en Windows, por eso el primer snippet no te muestra Febrero, esto es por el valor de 'locale' https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2008/39cwe7zf(v=vs.90)?redirectedfrom=MSDN, puedes usar 'esp' o 'spanish', tal como lo hiciste en el segundo snippet. Tambien sugiero si solo trabajaras con fechas, usar LC_TIME en lugar de LC_ALL.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Kathyu
Val: 1.670
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Mostrar nombre del mes en español

Publicado por Kathyu (455 intervenciones) el 16/09/2019 18:36:43
Es correcto lo de LC_TIME, en mi caso lo puse ALL porque era prueba, pero Anthony debe leer la documentación para asegurarse de poner lo que es mejor para su caso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Mostrar nombre del mes en español

Publicado por Anthony (2 intervenciones) el 16/09/2019 18:36:51
Yo estoy en Linux, el problema es que desconozco de php y no se como aplicarlo al código existente. Ya que $monthNum = 2; me muestra solo febrero, las fechas son extraidas desde base de datos no son estáticas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar