Algunas plataformas de retos online:
Introducción
¡Practiquemos con PHP!
¿Qué es la consola de comandos?
Cómo entrenar tu pensamiento lógico
Conceptos básicos en la práctica
Operadores lógicos con PHP
Operadores aritméticos con PHP
Estructuras de control con PHP
¿Qué son las funciones?
Ejercicios matemáticos con código
Mostrando datos en HTML desde PHP
¡Ponte a prueba!
Microproyecto de lógica
Microproyecto: Juego de ordenamiento de palabras, diseño de flujo y algoritmo
¡Creando nuestro juego!
Mejorando nuestro juego
Finalizando nuestro juego
Ejercicios de práctica
Conclusiones
Code Review del proyecto y buenas prácticas
Cierre del curso
Aportes 19
Preguntas 0
Algunas plataformas de retos online:
$input = '07:05:45 PM';
$firstSplit = explode(' ', $input);
# ['07:05:45', 'PM']
$secondSplit = explode(':', $firstSplit[0]);
# ['07', '05', '45']
$time = $firstSplit[1];
$hours = $secondSplit[0];
$minuts = $secondSplit[1];
$seconds = $secondSplit[2];
if ($time === 'AM' && $hours === '12') {
$hours = '00';
}
if ($time === 'PM' && $hours < '12') {
$hours = strval(+$hours + 12);
}
$output = "{$hours}:{$minuts}:{$seconds}";
echo "{$output} \n";
Formas de entrenar tu pensamiento lógico:
Adoro el tono de voz de esta profe…
function getMilitarTime(string $input): string
{
$hh = (int) substr($input,0,2);
$PM_AM = substr($input, 9);
if ($hh === 12 && $PM_AM === 'AM') {
$hh = 00;
} else if ($hh < 12 && $PM_AM === 'PM') {
$hh += 12;
}
return $hh . substr($input,2,6);
}
echo getMilitarTime('04:00:00 PM');
Quiero recomendar una página enfocada mayormente a problemas logico / matemáticos, no es una plataforma como tal como HackerRank, es parecida con pocas funcionalidades, pero tiene miles de problemas a resolver.
Project Euler.
----> https://projecteuler.net/
Cambiar el formato de hora de doce horas a hora militar aplicamos lo siguiente, si H es mayor a 12, entonces hora militar es igual a Hora más doce (HM = H + 12)
<?php
$entrada = "12:05:45 PM";
$separar_letras = explode (" ",$entrada);
$separar_numeros = explode (":",$separar_letras[0]);
$horas = $separar_numeros[0];
$minutos = $separar_numeros[1];
$segundos = $separar_numeros[2];
$t = $separar_letras[1];
if ($horas == 12 && $t == "AM")
$horas = "00";
elseif ($horas < 12 && $t == "PM")
$horas = ((int) $horas) +12;
echo "$horas:$minutos:$segundos \n";
<?php
echo "Conversionr de hora \n";
$horaNormal = readline('Ingrega la hora en el siguiente formato 01:45:20:PM : ');
$horaNormal = preg_split('/[\s,:;]+/', $horaNormal);
horaMilitar($horaNormal);
function horaMilitar($hora) {
if(count($hora) >= 3) {
$hora[3] = strtolower((string) $hora[3]);
if ($hora[0] == 12 && $hora[3] == 'am' ) {
} else if ($hora[0] < 12 && $hora[3] == 'pm') {
$hora[0] += 12;
}
unset($hora[3]);
echo "Hora Militar: {$hora[0]}:{$hora[1]}:{$hora[2]}";
} else {
echo "ingreso la hora incorrectamente";
}
}
echo "\n";
Mi solución utilizando clases en PHP 😃
Estaría excelente leer sus comentarios. ¡Muchas gracias!
function modificar_hora($hora){
if(str_contains($hora, 'pm')){
$hora_modificada = substr($hora, 0, 2);
$hora_modificada = $hora_modificada + 12;
return "La hora modificada es $hora_modificada" . substr($hora,2,6);
}else{
return "La hora es " . substr($hora,0,8);
}
}
echo modificar_hora("04:20:15am");
en lo personal encontré 2 formas de hacerlo así
<?php
echo "conversor de horas de formato 12 horas a 24 \n\n";
$hora = readline( "ingresa la hora " );
$minutos = readline( "ingresa los minutos " );
$pa = readline( "ingresa si es AM o PM " );
if ($pa == "pm"){
$hora = $hora + 12;
echo "la hora es " . $hora . ":". $minutos . "pm \n";
}else{
echo "la hora es " . $hora . ":". $minutos . "am \n";
}
// version 2
echo "conversor de horas de formato 12 horas a 24 \n\n";
echo "ingresa los valores de la sigueinte forma por ejemplo 04:54:34:pm \n\n";
$hora = readline( "ingresa la hora " );
$hora = explode(":", $hora);
if($hora[3] == "pm"){
$hora[0] = $hora[0] + 12;
unset($hora[3]);
$hora = implode(":", $hora);
echo "la hora es " . $hora . " \n" ;
}else{
unset($hora[3]);
$hora = implode(":", $hora);
echo "la hora es " . $hora . " \n" ;
}
<?php
$hora_input = readline("Ingresa la hora con el siguiente formato 'hh:mm:ss:AM/PM':");
$array = explode(":", $hora_input);
if ((reset($array) == "12") && (end($array) == "AM")) {
$array[0] = "00";
}
if ((end($array) == "PM") && (reset($array) < "12")) {
$array[0] = ($array[0] + 12);
}
echo "Son las ";
for ($i=0; $i<(count($array)-1); $i++) {
echo $array[$i];
if ($i < 2) {
echo ":";
}
}
echo " del dia \n";
Este sería mi código, aunque no recibe un input como tal 😦
$hora = [07,00,22,'PM'];
function cambioFormatoHora($hora){
if($hora[3] === 'PM'){
$newHour = 12 + $hora[0];
echo "La hora es $newHour:$hora[1]:$hora[2] - Formato 24 hrs";
}else{
echo "La hora es $hora[0]:$hora[1]:$hora[2] - Formato 24 hrs";
}
}
cambioFormatoHora($hora);
<?php
/**
* Convertir el formato de hora AM/PM a hora militar (formato 24hrs).
* Entrada: hh:mm:ss PM/AM
* Salida: hh:mm:ss
*/
class Tiempo{
public function convertHours($value){
$data = explode(' ',$value);
$horaCompleta = explode(':', $data[0]);
$minuto = $horaCompleta[1];
$segundo = $horaCompleta[2];
$tiempo = $data[1];
$hora = $horaCompleta[0];
if ($tiempo=='AM' && $horaCompleta[0] == 12) {
$hora = 00;
}
if ($tiempo == 'PM' && $horaCompleta[0]<12) {
$hora = 12+$horaCompleta[0];
}
return "La hora es: $hora:$minuto:$segundo";
}
}
$obj = new Tiempo();
print_r($obj->convertHours('05:03:30 PM'));
<?php
echo militarTime("01:00:00 AM"). '<br/>';
echo militarTime("01:00:00 PM");
function militarTime($hora)
{
$hh = (int)substr($hora, 0, 2);
$time = substr($hora, 9);
if($hh === 12 && $time === 'AM') {
$hh = 00;
} elseif($hh < 12 && $time === 'PM') {
$hh += 12;
}
return $hh . substr($hora, 2, 7);
}
const horas = [13,14,15,16,17,18,19,20,21,22,23,24]
function horaMilitar(hh,mm,ss,t){
if(t=="pm" || t=="PM"){
for(let i = 1; i <= horas.length; i++){
if(hh == i){
console.log(`${horas[i-1]}:${mm}:${ss}` )
}
}
} else if(t==="am" || t=="AM"){
console.log(`${hh}:${mm}:${ss}`)
}
}
horaMilitar(12,30,40,"pm")
Hice mi codigo en dos archivos html y php respectivamente.
El html es sencillamente un formulario para capturar datos.
Se que faltan temas de validación del formulario, pero lo importante y el aporte esta en el codigo php.
Aqui coloco mi codigo html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hora formato militar</title>
</head>
<body>
<header>
<h1>Formato de hora Militar</h1>
</header>
<form name="militarHour" method="GET" action="./militarHour.php">
<label for="hour">Escribe la hora</label>
<input type="number" name="hour" id="hour" min="01" max="12" require>
<label for="minutes">Escribe los minuts</label>
<input type="number" name="minutes" id="minutes" min="00" max="59" require>
<label for="selector">Selecciona AM o PM</label>
<select name="selector" id="selector">
<option value="am" selected>AM</option>
<option value="pm">PM</option>
</select>
<button type="submit">
Convertir a formato Militar
</button>
</form>
</body>
</html>
Este formulario es enviado por metodo GET para ver en la URL los parametros que se están recibiendo. Se que por buenas prácticas esto debería enviarse por POST, pero es solo por razones educativas estoy haciéndolo en GET.
Aquí el codigo del archivo PHP que procesa el formulario.
<?php
$hour = $_GET [ 'hour' ];
$minutes = $_GET [ 'minutes' ];
$selector = $_GET [ 'selector' ];
if ($minutes < '10'){
$minutes = '0' .$minutes;
}
if ($hour === '12' && $selector === 'am'){
$hour = '0';
if ($hour < '10'){
$hour = '0' .$hour;
}
echo "La hora ingresada en formato militar es <b>$hour:$minutes</b>";
} elseif ($selector === 'pm' && $hour <= '11'){
$hour = '12' + $hour;
echo "La hora ingresada en formato militar es <b>$hour:$minutes</b>";
} else {
if ($hour < '10'){
$hour = '0' .$hour;
}
echo "La hora ingresada en formato militar es <b>$hour:$minutes</b>";
}
Si quieres probarlo, el archivo html se llama index.html y el otro archivo se llama militarHour.php,
¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.