Estoy tratando de mostrar el temporizador de cuenta regresiva entre una columna de fecha/hora de finalización y la columna de fecha/hora del sistema usando el siguiente código. No muestra el temporizador.
Creé un elemento de página P3_TIMER y tiene una columna P3_STARTDATE.
var timer; var endDate = new Date(); endDate.setDate(endDate.getDate()); //End date is the sys date timer = setInterval(function() { timeBetweenDates(endDate); }, 1000); function timeBetweenDates(toDate) { var dateEntered = :P3_STARTDATE; var now = new Date(); var difference = dateEntered.getTime() - now.getTime(); if (difference <= 0) { // Timer done clearInterval(timer); } else { var seconds = Math.floor(difference / 1000); var minutes = Math.floor(seconds / 60); var hours = Math.floor(minutes / 60); var days = Math.floor(hours / 24); hours %= 24; minutes %= 60; seconds %= 60; $("#days").text(days); $("#hours").text(hours); $("#minutes").text(minutes); $("#seconds").text(seconds); } $s('P3_TIMER',timer); }No es posible mezclar pl/sql y javascript. Son lenguajes diferentes y se ejecutan en diferentes entornos.
function timeBetweenDates(toDate) { var dateEntered = :P3_STARTDATE; >>> This is pl/sql var now = new Date();El P3_STARTDATE debe convertirse en un objeto de fecha de JavaScript. Eso no puede ser directamente, se necesita un poco de análisis como se muestra en este hilo .
Para el siguiente ejemplo, se asume que la fecha se pasa en formato DD-MON-YYYY.
var timer; var endDate = new Date(); endDate.setDate(endDate.getDate()); //End date is the sys date timer = setInterval(function() { timeBetweenDates(endDate); }, 1000); function parseDate(s) { var months = {jan:0,feb:1,mar:2,apr:3,may:4,jun:5, jul:6,aug:7,sep:8,oct:9,nov:10,dec:11}; var p = s.split('-'); return new Date(p[2], months[p[1].toLowerCase()], p[0]); } function timeBetweenDates(toDate) { var dateEntered = parseDate(apex.item( "P63_DATE" ).getValue() ); var now = new Date(); var difference = dateEntered.getTime() - now.getTime(); if (difference <= 0) { // Timer done clearInterval(timer); } else { var seconds = Math.floor(difference / 1000); var minutes = Math.floor(seconds / 60); var hours = Math.floor(minutes / 60); var days = Math.floor(hours / 24); hours %= 24; minutes %= 60; seconds %= 60; $("#days").text(days); $("#hours").text(hours); $("#minutes").text(minutes); $("#seconds").text(seconds); } apex.item("P63_TIMER").setValue(`Days: ${days}, Hours: ${hours}, Minutes: ${minutes}, Seconds: ${seconds}`); }