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
Sección titulada «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
Sección titulada «Qué momento se trocea»En Elegir tipo dices de dónde sale la fecha:
| Tipo | De dónde sale el momento |
|---|---|
| Valor | El valor de la variable, leído como milisegundos desde 1970 |
| Fecha de creación | Cuándo se creó la variable |
| Última actualización | Cuá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
Sección titulada «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í:
| Tipo | Se escribe |
|---|---|
| Valor | value |
| Fecha de creación | creation_time |
| Última actualización | last_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 ventana | Se llama | Qué te da |
|---|---|---|
| Milisegundos | milliseconds_of_seconds |
0-999 |
| Segundo | seconds_of_minute |
0-59 |
| Minuto | minute_of_hour |
0-59 |
| Hora | hour_of_day |
0-23 |
| Día de la semana | day_of_week |
1 lunes … 7 domingo |
| Día del mes | day_of_month |
1-31 |
| Día del año | day_of_year |
1-366 |
| Semana del año | week_of_year |
1-53 |
| Mes del año | month_of_year |
1 enero … 12 diciembre |
| Año | year |
El 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 ventana | Se llama |
|---|---|
| Milisegundos | millisecond |
| Segundo | second |
| Minuto | minute |
| Hora | hour |
| Día | day |
| Semana | week |
| Mes | month |
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
Sección titulada «Configuración»
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
Sección titulada «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 desencadenanteEl 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.
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.
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.