es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo agregar “N” días a una variable de Smarty?

Necesito aumentar una fecha en una variable smarty. Esto no será para aumentar los días de una fecha actual como smarty.now, sino para aumentar los días a una variable de fecha de pedido.

Para la fecha actual, el código funciona:

{assign var="estimated_days" value=$smarty.now|date_format:"%u"}
{"+5 days"|strftime|date_format:"%A %e %B"}

Pero al usar esta fórmula en una variable no funciona correctamente porque muestra fechas incorrectas:

{assign var="estimated_days" value=$order.details.order_date|date_format:"%u"}
{"+5 days"|strftime|date_format:"%A %e %B"}

He intentado con {"order.details.order_date +5 Days"|date_format:'%A, %e de %B'} y múltiples fórmulas, y la conclusión es que la fecha de pedido correcta solo se muestra con la variable {$order.details.order_date} en formato 10-10-2021, pero cuando se agrega |date_format, la fecha capturada es como smarty.now (fecha actual) y no la fecha del pedido.

¿Quizás {assign var="estimated_days" value=$order.details.order_date|date_format:"%u"} está mal?

¿Cómo puedo agregar X días en una variable smarty {order.details.order_date} usando date_format?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para agregar una cantidad específica de días a una variable de fecha en Smarty usando date_format, puedes utilizar la función strtotime para calcular la nueva fecha basada en la fecha actual. Aquí hay un ejemplo del código:

    {assign var="order_date" value=$order.details.order_date|strtotime}
    {assign var="estimated_delivery_date" value=$order_date+5*86400} {# 5 días en segundos #}
    {$estimated_delivery_date|date_format:"%A %e %B"}
    

    En este ejemplo, primero convertimos la cadena $order.details.order_date en un sello de tiempo Unix usando strtotime. Luego, calculamos la fecha estimada de entrega agregando 5 días en segundos (86400 segundos por día) al sello de tiempo. Finalmente, el resultado es formateado utilizando date_format.

    Ten en cuenta que el formato del sello de tiempo puede variar dependiendo de cómo la fecha esté almacenada en $order.details.order_date. Si ya es un sello de tiempo Unix, puedes omitir la conversión strtotime. Si está en un formato diferente, puedes necesitar usar strtotime o date_create con un string de formato para convertirlo primero en un sello de tiempo.

Comments are closed.