Skip to content

Aritmética de Fechas

Calcular la fecha correspondiente al día siguiente

Version1:
@Ntod(@Year(FECHA_FACT)*10000 + (@Month(FECHA_FACT) )*100 + @Day(FECHA_FACT)+1,"AAAAMMDD")
No funciona para cambio de mes
Solución:
@Ntod( @If( @Day(FECHA) < @If(@Month(FECHA)=1 .OR. @Month(FECHA)=3 .OR. @Month(FECHA)=5 .OR. @Month(FECHA)=7 .OR. @Month(FECHA)=8 .OR. @Month(FECHA)=10 .OR. @Month(FECHA)=12, 31, @If(@Month(FECHA)=4 .OR. @Month(FECHA)=6 .OR. @Month(FECHA)=9 .OR. @Month(FECHA)=11, 30, @If((@Year(FECHA)%4=0 .AND. @Year(FECHA)%100 <> 0) .OR. @Year(FECHA)%400=0, 29, 28) ) ),
@Year(FECHA)*10000 + @Month(FECHA)*100 + (@Day(FECHA)+1),
@If( @Month(FECHA) < 12, @Year(FECHA)*10000 + (@Month(FECHA)+1)*100 + 1, (@Year(FECHA)+1)*10000 + 1*100 + 1 ) ), "AAAAMMDD" )
Minificada:
@Ntod( @If( @Day(FECHA) < @If(@Month(FECHA)=1 .OR. @Month(FECHA)=3 .OR. @Month(FECHA)=5 .OR. @Month(FECHA)=7 .OR. @Month(FECHA)=8 .OR. @Month(FECHA)=10 .OR. @Month(FECHA)=12, 31, @If(@Month(FECHA)=4 .OR. @Month(FECHA)=6 .OR. @Month(FECHA)=9 .OR. @Month(FECHA)=11, 30, @If((@Year(FECHA)%4=0 .AND. @Year(FECHA)%100 <> 0) .OR. @Year(FECHA)%400=0, 29, 28) ) ), @Year(FECHA)*10000 + @Month(FECHA)*100 + (@Day(FECHA)+1), @If( @Month(FECHA) < 12, @Year(FECHA)*10000 + (@Month(FECHA)+1)*100 + 1, (@Year(FECHA)+1)*10000 + 1*100 + 1 ) ), "AAAAMMDD" )

Sumar una cantidad de días


@Ntod(
@If(
@Day(FECHA) + DIAS <=
@If(@Month(FECHA)=1 .OR. @Month(FECHA)=3 .OR. @Month(FECHA)=5 .OR. @Month(FECHA)=7 .OR. @Month(FECHA)=8 .OR. @Month(FECHA)=10 .OR. @Month(FECHA)=12, 31,
@If(@Month(FECHA)=4 .OR. @Month(FECHA)=6 .OR. @Month(FECHA)=9 .OR. @Month(FECHA)=11, 30,
@If((@Year(FECHA)%4=0 .AND. @Year(FECHA)%100 <> 0) .OR. @Year(FECHA)%400=0, 29, 28)
)
),
/* Sin Overflow */
@Year(FECHA)*10000 + @Month(FECHA)*100 + (@Day(FECHA)+DIAS),
/* Cuando hay Overflow */
@If(
@Month(FECHA) < 12,
/* Proximo mes */
@Year(FECHA)*10000 + (@Month(FECHA)+1)*100 +
(@Day(FECHA)+DIAS -
@If(@Month(FECHA)=1 .OR. @Month(FECHA)=3 .OR. @Month(FECHA)=5 .OR. @Month(FECHA)=7 .OR. @Month(FECHA)=8 .OR. @Month(FECHA)=10 .OR. @Month(FECHA)=12, 31,
@If(@Month(FECHA)=4 .OR. @Month(FECHA)=6 .OR. @Month(FECHA)=9 .OR. @Month(FECHA)=11, 30,
@If((@Year(FECHA)%4=0 .AND. @Year(FECHA)%100 <> 0) .OR. @Year(FECHA)%400=0, 29, 28)
)
)),
/* Proximo Año */
(@Year(FECHA)+1)*10000 + 1*100 +
(@Day(FECHA)+DIAS -
@If(@Month(FECHA)=1 .OR. @Month(FECHA)=3 .OR. @Month(FECHA)=5 .OR. @Month(FECHA)=7 .OR. @Month(FECHA)=8 .OR. @Month(FECHA)=10 .OR. @Month(FECHA)=12, 31,
@If(@Month(FECHA)=4 .OR. @Month(FECHA)=6 .OR. @Month(FECHA)=9 .OR. @Month(FECHA)=11, 30,
@If((@Year(FECHA)%4=0 .AND. @Year(FECHA)%100 <> 0) .OR. @Year(FECHA)%400=0, 29, 28)
)
))
)
),
"AAAAMMDD"
)
Minificada:
@Ntod( @If( @Day(FECHA) + DIAS <= @If(@Month(FECHA)=1 .OR. @Month(FECHA)=3 .OR. @Month(FECHA)=5 .OR. @Month(FECHA)=7 .OR. @Month(FECHA)=8 .OR. @Month(FECHA)=10 .OR. @Month(FECHA)=12, 31, @If(@Month(FECHA)=4 .OR. @Month(FECHA)=6 .OR. @Month(FECHA)=9 .OR. @Month(FECHA)=11, 30, @If((@Year(FECHA)%4=0 .AND. @Year(FECHA)%100 <> 0) .OR. @Year(FECHA)%400=0, 29, 28) ) ), @Year(FECHA)*10000 + @Month(FECHA)*100 + (@Day(FECHA)+DIAS), @If( @Month(FECHA) < 12, @Year(FECHA)*10000 + (@Month(FECHA)+1)*100 + (@Day(FECHA)+DIAS - @If(@Month(FECHA)=1 .OR. @Month(FECHA)=3 .OR. @Month(FECHA)=5 .OR. @Month(FECHA)=7 .OR. @Month(FECHA)=8 .OR. @Month(FECHA)=10 .OR. @Month(FECHA)=12, 31, @If(@Month(FECHA)=4 .OR. @Month(FECHA)=6 .OR. @Month(FECHA)=9 .OR. @Month(FECHA)=11, 30, @If((@Year(FECHA)%4=0 .AND. @Year(FECHA)%100 <> 0) .OR. @Year(FECHA)%400=0, 29, 28) ) )), (@Year(FECHA)+1)*10000 + 1*100 + (@Day(FECHA)+DIAS - @If(@Month(FECHA)=1 .OR. @Month(FECHA)=3 .OR. @Month(FECHA)=5 .OR. @Month(FECHA)=7 .OR. @Month(FECHA)=8 .OR. @Month(FECHA)=10 .OR. @Month(FECHA)=12, 31, @If(@Month(FECHA)=4 .OR. @Month(FECHA)=6 .OR. @Month(FECHA)=9 .OR. @Month(FECHA)=11, 30, @If((@Year(FECHA)%4=0 .AND. @Year(FECHA)%100 <> 0) .OR. @Year(FECHA)%400=0, 29, 28) ) )) ) ), "AAAAMMDD" )

Restar una cantidad de días


@Ntod(
@If(
@Day(FECHA) > DIAS,

/* No underflow */
@Year(FECHA)*10000 + @Month(FECHA)*100 + (@Day(FECHA)-DIAS),

/* Underflow */
@If(
@Month(FECHA) > 1,

/* Previous month */
@Year(FECHA)*10000 + (@Month(FECHA)-1)*100 +
(
@If(@Month(FECHA)-1=1 .OR. @Month(FECHA)-1=3 .OR. @Month(FECHA)-1=5 .OR. @Month(FECHA)-1=7 .OR. @Month(FECHA)-1=8 .OR. @Month(FECHA)-1=10 .OR. @Month(FECHA)-1=12, 31,
@If(@Month(FECHA)-1=4 .OR. @Month(FECHA)-1=6 .OR. @Month(FECHA)-1=9 .OR. @Month(FECHA)-1=11, 30,
@If((@Year(FECHA)%4=0 .AND. @Year(FECHA)%100 <> 0) .OR. @Year(FECHA)%400=0, 29, 28)
)
)
- (DIAS - @Day(FECHA))
),

/* Previous year */
(@Year(FECHA)-1)*10000 + 12*100 +
(
31 - (DIAS - @Day(FECHA))
)
)
),
"AAAAMMDD"
)

Minificado:
@Ntod( @If( @Day(FECHA) > DIAS, @Year(FECHA)*10000 + @Month(FECHA)*100 + (@Day(FECHA)-DIAS), @If( @Month(FECHA) > 1, @Year(FECHA)*10000 + (@Month(FECHA)-1)*100 + ( @If(@Month(FECHA)-1=1 .OR. @Month(FECHA)-1=3 .OR. @Month(FECHA)-1=5 .OR. @Month(FECHA)-1=7 .OR. @Month(FECHA)-1=8 .OR. @Month(FECHA)-1=10 .OR. @Month(FECHA)-1=12, 31, @If(@Month(FECHA)-1=4 .OR. @Month(FECHA)-1=6 .OR. @Month(FECHA)-1=9 .OR. @Month(FECHA)-1=11, 30, @If((@Year(FECHA)%4=0 .AND. @Year(FECHA)%100 <> 0) .OR. @Year(FECHA)%400=0, 29, 28) ) ) - (DIAS - @Day(FECHA)) ), (@Year(FECHA)-1)*10000 + 12*100 + ( 31 - (DIAS - @Day(FECHA)) ) ) ), "AAAAMMDD" )







Calcular la fecha correspondiente al próximo mes
@Ntod(@Year(FECHA_FACT)*10000 + (@Month(FECHA_FACT) +1)*100 + @Day(FECHA_FACT),"AAAAMMDD")
Calcular la fecha correspondiente al próximo año




No se puede usar porque la resta puede caer en días inexistentes (30 de febrero).
@If(@Month(FECHA_FACT) -1 < 1, @Ntod((@Year(FECHA_FACT)-1)*10000 + 12*100 + @Day(FECHA_FACT),"AAAAMMDD"), @Ntod(@Year(FECHA_FACT)*10000 + (@Month(FECHA_FACT) -1)*100 + @Day(FECHA_FACT),"AAAAMMDD"))








@If(@Month(FECHA_COMPROBANTE) -1 < 1, @Ntod((@Year(FECHA_COMPROBANTE)-1)*10000 + 12*100 + @Day(FECHA_COMPROBANTE),"AAAAMMDD"), @Ntod(@Year(FECHA_COMPROBANTE)*10000 + (@Month(FECHA_COMPROBANTE) -1)*100 + @Day(FECHA_COMPROBANTE),"AAAAMMDD"))

Periodo:
@Left(FECHA_COMPROBANTE,6)

Periodo Anterior:
@Left(@If(@Month(FECHA_COMPROBANTE) -1 < 1, @Ntod((@Year(FECHA_COMPROBANTE)-1)*10000 + 12*100 + 1, "AAAAMMDD"), @Ntod(@Year(FECHA_COMPROBANTE)*10000 + (@Month(FECHA_COMPROBANTE) -1)*100 + 1, "AAAAMMDD")),6)

Want to print your doc?
This is not the way.
Try clicking the ··· in the right corner or using a keyboard shortcut (
CtrlP
) instead.