Извлечь часы и минуты из функции даты - PullRequest
0 голосов
/ 13 февраля 2020

Я хочу передать переменную времени, извлеченную из базы данных, как функцию Date в jQuery, хочу извлечь из нее часы и минуты и сохранить ее в переменной javascript.

var time="<?php echo $row['time']; ?>";
var time=new Date(time);
var hrs=time.getHours();
var min=time.getMinutes();

Пожалуйста, найдите, есть ли какая-либо ошибка в этом коде.

Ответы [ 4 ]

0 голосов
/ 14 февраля 2020

Вам нужно преобразовать UNIX метку времени (в секундах), которая исходит из вашего кода PHP, в миллисекунды , а затем передать его как параметр до Date object.

Рассмотрим приведенный ниже пример в JavaScript:

//UNIX Timestamp from your PHP code
let timeInUNIXTimeStamp = "1581653281"; 

// Create a new JavaScript Date object based on the timestamp
// Multiplied by 1000 to convert it into milliseconds, from seconds, as Date object works in milliseconds
var date = new Date(timeInUNIXTimeStamp * 1000);

// Get Hours part from the timestamp
var hours = date.getHours();

// Get Minutes part from the timestamp
var minutes = "0" + date.getMinutes();



// Will display time in H:M format
var timeInHMSFormat = hours + ':' + minutes.substr(-2);

console.log(timeInHMSFormat);

Вы также можете достичь в PHP также, там вам нужно конвертировать UNIX Timestamp в формат H: M, используя функцию date(), где первый Параметр будет форматом, который вы хотели, и второй будет вашим UNIX Timestamp.

Пример: date("h:i", 1581653281);
Где ч - часы, в 12-часовом формате
i - минуты

Прочитать ход около PHP data() функция Дата функция в php

Рассмотрим PHP код ниже Внутри вашего JavaScript:

   var time="<?php echo date('h:i', $row['time']); ?>";

   //Now Split the above string into array
   var timeArray = time.split(":");

   var hours = timeArray[0];
   var minutes = timeArray[1];



Подробнее см. этот ответ Преобразовать UNIX Отметка времени

0 голосов
/ 13 февраля 2020

Без дополнительных знаний я не могу дать вам ответ. Но вполне вероятно, что вы ожидаете объект Date, когда на самом деле ваша БД возвращает что-то еще.

(может быть строка ?, число?)

Убедитесь, что тип данных точно хранится в вашей переменной времени. Было бы моим предложением, потому что я не вижу ошибок в коде. Должно быть логика c

Действительно надеюсь, что это помогло, но более глубокое понимание того, что делает ваша БД, поможет получить четкий ответ:)

Удачи!

0 голосов
/ 13 февраля 2020

Это сделало это для меня:

let jsdate = new Date(unixtimestamp+1000);

пример использования:

let a = new Date();
console.log("a ="+a)

let stamp = a.getTime()
console.log("stamp ="+stamp) // timestamp

let newTimeObj = new Date(stamp*1000)
console.log("newTimeObj :::::::"+newTimeObj)

ВЫХОД ::::

Output

0 голосов
/ 13 февраля 2020

Вы можете найти ответы на этот вопрос по всему Stackoverflow или прочитать документы на объекте даты.

Однако, вот ответ, который вам может понравиться

var myMinutes = 1; // This represent 1 minute subtraction
var myHours   = 60; // This represent 60 minutes subtraction which is 1 hour
var dateMSubObject= new Date(oldDateObject.getTime() - myMinutes*60000); //Substracting your minutes variable
var dateHSubObject= new Date(oldDateObject.getTime() - myHours*60000); //Substracting your hours variable

Чтобы сделать его более управляемым, вы могли бы сделать такие часы, как это, например, et c 24 часа

var myHours   = 60*24; // This represent 24 hours subtraction

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

Часть 60000 длится в миллисекундах и представляет 1 минуту.

И добро пожаловать в StackOverflow, если вы потратите некоторое время на изучение веб-сайта, вы быстро сможете найти наиболее распространенные вопросы, обычно за которыми следуют отличные ответы :)

...