Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

243
Views
formulario de fecha html: cómo establecer la fecha de inicio como mañana usando Javascript

Tratando de limitar la fecha de inicio como mañana (fecha local). ¿Alguien puede decir por qué el siguiente código no funciona?

 <form method="POST"> <div> <label for="s2">pickup_date</label> <input type = 'date' name='pickup_date' required> <br /><br /> </div> </form> <script> var time = new Date(); var localTimeStr = time.toLocaleString('en-US', { timeZone: 'Asia/Shanghai' }); today = new Date(localTimeStr) tomorrow = new Date(today.setDate(today.getDate() + 1)).toISOString().split('T')[0]; t = String(tomorrow) document.getElementsByName("pickup_date")[0].setAttribute('min', t); </script>

la salida del siguiente código es 2022-01-18:

 var time = new Date(); var localTimeStr = time.toLocaleString('en-US', { timeZone: 'Asia/Shanghai' }); today = new Date(localTimeStr) tomorrow = new Date(today.setDate(today.getDate() + 1)).toISOString().split('T')[0]; t = tomorrow.split('-')[0]+'-'+tomorrow.split('-')[1]+'-'+tomorrow.split('-')[2] console.log(t)

sin embargo, la fecha de inicio del calendario en el formulario sigue siendo 2022-01-17. Pero, cuando configuro manualmente

 document.getElementsByName("pickup_date")[0].setAttribute('min', '2022-01-18');

el calendario comienza desde 2022-01-18 correctamente. ¡por qué!

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

En el OP hay:

 var time = new Date(); var localTimeStr = time.toLocaleString('en-US', { timeZone: 'Asia/Shanghai' }); today = new Date(localTimeStr)

Eso devolverá una marca de tiempo con la fecha y la hora de Shanghái.

 tomorrow = new Date(today.setDate(today.getDate() + 1)).toISOString().split('T')[0];

Eso primero analizará la cadena asignada a hoy como "local" para el sistema host utilizando el analizador incorporado, lo cual ECMA-262 no requiere (ver ¿Por qué Date.parse da resultados incorrectos? ).

Luego devolverá una cadena con formato ISO 8601 para la fecha y hora UTC equivalentes. Si el desplazamiento del sistema host es positivo, dependiendo de la hora en la marca de tiempo, la fecha será el mismo día o el día anterior. De manera similar, para los hosts con un desplazamiento negativo, la fecha puede ser el mismo día o el día siguiente, según la hora en la cadena y el desplazamiento del sistema host.

Hay muchas preguntas sobre el formato de las fechas, los diversos métodos toLocaleString son útiles, pero no sé qué tan confiables son a largo plazo. Para obtener una fecha local con formato ISO 8601, el formato asociado con el idioma en-CA parece adecuado:

 new Date().toLocaleDateString('en-CA')

Si desea obtener marcas de tiempo para la fecha actual y mañana en Shanghái en formato AAAA-MM-DD, considere:

 let d = new Date(); let today = d.toLocaleDateString('en-CA', {timeZone:'Asia/Shanghai'}); d.setDate(d.getDate() + 1); let tomorrow = d.toLocaleDateString('en-CA', {timeZone:'Asia/Shanghai'}); console.log(`Today : ${today}\nTomorrow: ${tomorrow}`);

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!