Ir al contenido
Wiki Hartico

Utilidad de Tiempo

Utilidad de Tiempo

En Wired Code: extra.var_time_util

Coge un momento guardado en una variable y lo parte en trozos: el año, el mes, el día de la semana, la hora… Y aparte, unas cuantas variables que sirven para restar dos momentos y saber cuánto ha pasado entre ellos.

Cómo funciona

Una fecha, por dentro, es un número enorme: los milisegundos que han pasado desde 1970. Ese número no te sirve para nada tal cual — lo que quieres saber es si es lunes, o si han pasado tres días. Eso es lo que hace este complemento.

Va en la misma baldosa que la caja de la variable, no en la pila donde lo uses. Basta con compartir baldosa, no hace falta que quede justo encima.

Qué momento se trocea

En Elegir tipo dices de dónde sale la fecha:

TipoDe dónde sale el momento
ValorEl valor de la variable, leído como milisegundos desde 1970
Fecha de creaciónCuándo se creó la variable
Última actualizaciónCuándo se cambió por última vez

La caja tiene que poder darte ese dato: "Valor" pide una variable que guarde valor, y cada fecha, una variable que guarde esa fecha. Qué guarda cada tipo de variable está en la tabla de Edad de variable. Sobre un Eco, los tipos de fecha no producen nada: usa la variable original.

La ventana ofrece los tipos que admite alguna de las cajas de variable que haya en la baldosa; si no hay ninguna caja, salen los tres. El tipo que ya tenías guardado sigue saliendo siempre, aunque la caja no lo admita: en ese caso no brota ninguna variable.

Las variables que brotan

Se llaman como la caja, el tipo, y la parte, todo separado por puntos. Si tu variable se llama entrada y eliges "Valor", marcar "Día de la semana" te da entrada.value.day_of_week. El tipo se escribe así:

TipoSe escribe
Valorvalue
Fecha de creacióncreation_time
Última actualizaciónlast_update_time

En los dos tipos de fecha brota una más, sin parte detrás —entrada.creation_time o entrada.last_update_time, según el tipo—, con el momento entero. Esa aparece siempre, marques lo que marques.

Crear subvariables, las diez partes del calendario:

En la ventanaSe llamaQué te da
Milisegundosmilliseconds_of_seconds0-999
Segundoseconds_of_minute0-59
Minutominute_of_hour0-59
Horahour_of_day0-23
Día de la semanaday_of_week1 lunes … 7 domingo
Día del mesday_of_month1-31
Día del añoday_of_year1-366
Semana del añoweek_of_year1-53
Mes del añomonth_of_year1 enero … 12 diciembre
AñoyearEl año con sus cuatro cifras

Día de la semana y Mes del año ya vienen con los nombres puestos, en inglés: si los sacas en un mensaje verás «Monday» o «January», no el número ni «lunes» o «enero». No les hace falta un Conector de texto.

Subvariables avanzadas, que son otra cosa: no son partes de la fecha, son unidades enteras contadas desde 1970.

En la ventanaSe llama
Milisegundosmillisecond
Segundosecond
Minutominute
Horahour
Díaday
Semanaweek
Mesmonth

Por sí solas no dicen nada —day es un número de seis cifras—, pero restadas entre dos momentos te dan cuántas unidades han pasado. Es la forma de responder a "¿cuántos días lleva sin entrar?": guardas el day de la última visita y lo restas del day de hoy.

Configuración

Ventana de configuración de Utilidad de Tiempo

Elegir tipo: Valor, Fecha de creación o Última actualización.

Crear subvariables: una casilla por cada parte del calendario.

Subvariables avanzadas: una casilla por cada unidad. Marca solo las que vayas a usar.

Ejemplo

Una sala que saluda distinto los fines de semana.

La caja de la variable global ahora va en su pila, con el complemento en la misma baldosa, en tipo Valor y marcada Día de la semana.

Pila A
│
├─ Complemento: Marcador de posición de variable
│    ├─ Nombre del identificador ................ dia
│    ├─ Escoge una variable ..................... ahora.value.day_of_week   (ámbito global)
│    └─ Escoge el tipo de visualización ......... Textual
│
├─ Causante: Entrada
│    └─ Elige causante .......................... Cualquier usuario
│
├─ Efecto: Cambiar valor de variable
│    ├─ Escoge una variable ..................... ahora            (ámbito global)
│    ├─ Escoge una operación .................... Asignar
│    └─ Valor de referencia ..................... @current_time
│
└─ Efecto: Mensaje
     ├─ ¿Cuál es el mensaje? .................... "Hoy es $(dia)"
     └─ Visibilidad del mensaje ................. Solo el usuario desencadenante

El Marcador de posición de variable apunta a ahora.value.day_of_week y le pone el identificador dia: el mensaje dice el nombre del día en inglés («Hoy es Monday»), porque ese conector ya viene puesto.

Si en vez de enseñarlo quieres decidir con él, la condición Valor de variable comparando ahora.value.day_of_week con 6 te separa el sábado.

Notas

Las partes del calendario van en la hora de la sala. La zona horaria es la de los ajustes de la sala: cambiarla cambia el día y la hora en el acto, sin tocar la variable.

Las avanzadas no. Cuentan siempre desde 1970 en hora universal, porque su trabajo es restarse entre ellas y ahí la zona horaria solo estorbaría.

La semana del año no es la misma que la de @current_time. Aquí la semana empieza en domingo y el 1 de enero cae siempre en la semana 1. La variable del sistema usa la norma internacional, que empieza en lunes. Para las fechas de fin de año las dos no coinciden — no las mezcles en la misma cuenta.

Solo se pueden escribir en tipo Valor. Escribir una parte —ponerle 15 a day_of_month— recoloca esa pieza y reescribe la variable de la caja con la fecha nueva. En los tipos de fecha no hay nada que reescribir: son de solo lectura.

Y solo en tipo Valor se pueden vigilar con Cambio de variable. En los tipos de fecha salen en gris en su lista. En tipo Valor el causante salta cuando cambia la caja, con lo que le haya pasado a esa parte: sube, baja o se queda igual.

En otra sala, con Compartir e Importar. Sobre una variable compartida entre salas, una Variable heredada no trae sus subvariables: se las lleva una copia que manda Compartir y aplica Importar.

Los milisegundos no caben en la Inspección. millisecond y el momento entero son números demasiado grandes para enseñarlos ahí, así que salen como "Hidden". Funcionan igual: se pueden comparar y restar.

En esta página