1
00:00:00,510 --> 00:00:01,440
Y qué pasa con la fecha?

2
00:00:01,530 --> 00:00:06,800
Por ejemplo, si queremos validar un date brillaba, como por ejemplo una fecha de cumpleaños o fecha

3
00:00:06,820 --> 00:00:12,600
nacimiento del usuario, podríamos revisar, agregar un campo en la clase usuario y también en el formulario.

4
00:00:12,940 --> 00:00:22,050
Bueno, primero en el usuario vas a agregar un nuevo atributo dato importante importar de ya útil porque

5
00:00:22,050 --> 00:00:25,080
tenemos SQL y útil útil de Java.

6
00:00:25,640 --> 00:00:32,170
Bien en nombre, fecha, nacimiento y como siempre con respectivo tranqu.

7
00:00:32,340 --> 00:00:34,530
Entonces por acá abajo que transceptor.

8
00:00:38,280 --> 00:00:45,180
Y marcamos todo bueno, fecha, nacimiento general, bien guardamos, nos vamos a la lista, al formulario

9
00:00:45,240 --> 00:00:48,690
por acá abajo, al final vamos a copiar cuenta.

10
00:00:51,050 --> 00:00:51,920
La pegamos.

11
00:00:54,120 --> 00:01:00,140
Fecha de fecha nacimiento haga también fecha nacimiento, recuerden.

12
00:01:00,300 --> 00:01:05,040
Mismo nombre que el atributo importante fecha nacimiento con mayúscula.

13
00:01:06,170 --> 00:01:15,200
Lo mismo el Heidy, lo mismo también cuando aliamos el field cacería, fecha, nacimiento importante.

14
00:01:15,260 --> 00:01:17,120
Mismo nombre que el atributo.

15
00:01:18,330 --> 00:01:18,830
Acá.

16
00:01:19,760 --> 00:01:20,300
Igual.

17
00:01:22,090 --> 00:01:26,360
Y acá también para los mensajes de error, fecha, nacimiento.

18
00:01:28,030 --> 00:01:32,560
Pero bien, la fecha de nacimiento es un input del tipo bueno, diferente alternativa.

19
00:01:32,620 --> 00:01:40,480
Primero text, pero también HTML5 soporta data para fecha con un test picker, un calendario para seleccionar,

20
00:01:40,570 --> 00:01:41,860
pero, pero eso lo dejamos para después.

21
00:01:41,950 --> 00:01:43,900
Por ahora del tipo text guardamos.

22
00:01:43,990 --> 00:01:45,220
Bueno, y cómo se valida?

23
00:01:45,640 --> 00:01:53,470
Por ejemplo acá tenemos integer las reglas del tipo String también sus reglas, pero en doit cómo sería?

24
00:01:53,530 --> 00:01:54,310
Cómo valíamos?

25
00:01:54,430 --> 00:01:58,570
Bueno, de al igual que integer del tipo de referencia es un objeto.

26
00:01:58,900 --> 00:02:04,330
Entonces podríamos validar con un null justamente que sea distinto de null y listo.

27
00:02:04,510 --> 00:02:05,050
Así de fácil.

28
00:02:05,200 --> 00:02:10,690
Bueno, también podríamos validar con futuro con pasado, es decir, que una fecha sea en pasado, a

29
00:02:10,690 --> 00:02:15,730
la fecha actual, una fecha futura o que sea igual a la actual o futura.

30
00:02:15,760 --> 00:02:16,120
En fin.

31
00:02:16,210 --> 00:02:17,500
Pero también lo vemos después.

32
00:02:17,530 --> 00:02:19,060
Por ahora vamos a validar.

33
00:02:19,240 --> 00:02:21,400
Bueno, y con esto ya tenemos lo mínimo, lo básico.

34
00:02:21,580 --> 00:02:22,780
Entonces vamos a levantar.

35
00:02:24,820 --> 00:02:25,780
Íbamos a probar.

36
00:02:27,900 --> 00:02:29,400
Bien, nos vamos al formulario.

37
00:02:30,630 --> 00:02:31,920
Acá tenemos fecha de nacimiento.

38
00:02:32,010 --> 00:02:32,490
Enviar.

39
00:02:32,730 --> 00:02:33,240
Se fijan?

40
00:02:33,390 --> 00:02:37,050
Bueno, hasta momento muestra un tremendo mensaje de error.

41
00:02:37,140 --> 00:02:41,250
Claro, porque estamos agregando nada vigen ninguna fecha.

42
00:02:41,370 --> 00:02:46,110
Entonces, claro, se toma como un string vacío del tipo text y un string pasado.

43
00:02:46,110 --> 00:02:48,810
El tipo text no coincide el formato con una fecha.

44
00:02:48,900 --> 00:02:54,540
Entonces por esto dice hay un string que lo queremos convertir a un dato que aún lleva útil date a una

45
00:02:54,540 --> 00:02:57,790
fecha, pero este string vacío no corresponde a una fecha válida.

46
00:02:57,850 --> 00:03:03,630
Entonces, por eso el error no puede convertir o hacer el parse o analizar este string para convertir

47
00:03:03,690 --> 00:03:04,590
en una fecha de Java.

48
00:03:04,710 --> 00:03:06,840
Ahora, cuál sería el formato correcto por defecto?

49
00:03:06,960 --> 00:03:15,750
Bueno, es año, mes, día, como por ejemplo 2020 Larch 03 15 Enviar.

50
00:03:16,260 --> 00:03:22,920
Perfecto, ahí lo acepta, pero si se fijan de forma automática, da un formato según nuestra localización,

51
00:03:23,010 --> 00:03:24,210
nuestra zona horaria.

52
00:03:24,270 --> 00:03:26,190
Pero también eso se puede customizar.

53
00:03:26,820 --> 00:03:29,190
Primero vamos a arreglar este mensaje de error.

54
00:03:29,430 --> 00:03:31,590
Bien, nos vamos a Messages Properties.

55
00:03:31,950 --> 00:03:38,640
Y ahora teníamos también cómo manejar un integer, un texto, algún valor que no corresponda a un formato

56
00:03:38,640 --> 00:03:39,160
de un entero.

57
00:03:39,270 --> 00:03:42,260
Entonces seríamos parecío, incluso podríamos copiar esto.

58
00:03:42,360 --> 00:03:45,750
El Type Myst Match lo pegamos acá.

59
00:03:46,180 --> 00:03:46,800
Punto.

60
00:03:46,950 --> 00:03:49,800
El nombre de la clase sería ya útil.

61
00:03:49,830 --> 00:03:57,030
Data igual el texto que queramos, por ejemplo, debe ser una fecha con formato año, mes, día, como

62
00:03:57,030 --> 00:03:57,480
por ejemplo.

63
00:04:03,070 --> 00:04:10,240
Año, mes, día, bueno, la M con mayúscula para indicar el mes, por ejemplo cero uno cero dos cero

64
00:04:10,240 --> 00:04:16,750
tres hasta doce, porque MM con minúscula corresponde a los minutos con mayúscula al mes, minúscula

65
00:04:16,780 --> 00:04:17,440
con los minutos.

66
00:04:17,500 --> 00:04:24,070
Entonces para diferenciar el año en minúscula y los días en minúscula con doble D. con dos leme y con

67
00:04:24,070 --> 00:04:31,240
cuatro i griega que corresponde a la cantidad de dígitos bien guardamos y probamos tres dejan de ser

68
00:04:31,300 --> 00:04:34,540
una fecha con formato año, mes, día.

69
00:04:34,750 --> 00:04:41,520
Así que ya hacemos formato, pero también lo podríamos agregar acá como un placeholder apretando HTML5.

70
00:04:41,830 --> 00:04:49,450
Entonces no podríamos ir a formulario, no podríamos ir acá al input placeholder con ese formato año,

71
00:04:49,900 --> 00:04:51,280
mes, día.

72
00:04:52,930 --> 00:04:53,470
Perfecto.

73
00:04:53,980 --> 00:04:57,100
Guardamos, actualizamos para revisar.

74
00:04:57,160 --> 00:05:02,140
Perfecto, incluso acá indica el formato que debiera tener entonces cualquier formato de fecha, por

75
00:05:02,140 --> 00:05:04,180
ejemplo Hakata, perfecto enviar.

76
00:05:04,840 --> 00:05:05,470
Ningún problema.

77
00:05:05,530 --> 00:05:06,250
Lo acepta.

78
00:05:06,610 --> 00:05:08,350
Pero qué pasa si colocamos otro formato?

79
00:05:09,040 --> 00:05:11,140
Por ejemplo, separÃ con guión.

80
00:05:12,850 --> 00:05:20,440
Guión y acá también guión enviar desde una fecha con formato tanto se fija entonces cualquier formato,

81
00:05:20,470 --> 00:05:26,230
cualquier texto que coloquemos de fecha, debe coincidir con este de acá, que es el formato por defecto.

82
00:05:26,410 --> 00:05:28,330
Pero entonces falta un detalle que solucionar.

83
00:05:28,390 --> 00:05:35,270
Por ejemplo, el envío acá y bueno, falla la validación de lo demás campo, pero está correcta.

84
00:05:35,590 --> 00:05:38,360
Por ejemplo, acá el formato fecha está correcto.

85
00:05:38,440 --> 00:05:41,440
Si falla acá muestra otro formato distinto.

86
00:05:41,680 --> 00:05:47,530
Bueno, entonces la idea es mantener un formato estable o personalizar nuestro formato fecha y en realidad

87
00:05:47,530 --> 00:05:48,460
podemos coger cualquiera.

88
00:05:48,670 --> 00:05:55,150
Bueno, para eso nos vamos al Entity y en fecha vencimiento en el atributo acá podemos anotar con doit

89
00:05:55,180 --> 00:05:55,990
tain formato

90
00:05:58,660 --> 00:06:02,470
importamos y acá tenemos un atributo pattern.

91
00:06:03,340 --> 00:06:12,640
Acá podemos aplicar nuestro patrón de fecha y ese que va a valer por ejemplo año, mes, día, el mismo

92
00:06:12,640 --> 00:06:15,550
que estamos utilizando por defecto o que se utiliza por defecto.

93
00:06:15,640 --> 00:06:17,190
Esperamos que se actualice bien.

94
00:06:17,320 --> 00:06:21,700
Ahora si se fijan voy a quitar esto, voy a colocar la fecha correcta.

95
00:06:22,150 --> 00:06:25,000
Enviar se fijan ahora envío y se mantiene.

96
00:06:25,150 --> 00:06:29,530
No cambia el formato, no cambia según la localización ni nada por el estilo.

97
00:06:29,740 --> 00:06:32,890
No cambia el formato una vez que se envía tienen que se mantiene en este formato.

98
00:06:33,070 --> 00:06:37,870
Ahora, qué pasa si quiero cambiar de formato y colocar en vez de latch colocar un guión?

99
00:06:38,140 --> 00:06:40,300
Bien, por ejemplo acá vamos a cambiar.

100
00:06:40,300 --> 00:06:48,400
Acá a Ion guión guardamos y para que esté de acuerdo con eso, también vamos a modificar acá el placeholder.

101
00:06:49,550 --> 00:06:54,280
Cambiamos acá, cambiamos acá y también el Mensas Properties.

102
00:06:54,470 --> 00:06:55,970
Voy a guardar y acá también.

103
00:06:59,430 --> 00:07:00,390
Esperemos que se actualice.

104
00:07:00,510 --> 00:07:01,380
Guardamos todo.

105
00:07:01,770 --> 00:07:06,660
Volvemos enviar acá debería fallar porque el formato ahora con guión no es con el archa.

106
00:07:07,080 --> 00:07:10,750
Se fijan desde una fecha en formato muy parecido, pero con guión.

107
00:07:11,310 --> 00:07:15,110
Entonces ahora, por ejemplo, si usamos Septa, estaba acá en Pier.

108
00:07:15,420 --> 00:07:15,900
Perfecto.

109
00:07:15,990 --> 00:07:16,440
Se fijan.

110
00:07:16,720 --> 00:07:22,400
Entonces puedo manejar el formato que yo quiera utilizando la anotación tayta informate bien.

111
00:07:22,530 --> 00:07:29,600
La siguiente clase Vamos a revisar el input del tipo Tait y también vamos a trabajar con pasado y con

112
00:07:29,610 --> 00:07:35,760
futuro como valida que sea una fecha en pasado o una fecha en futuro o también presente o combinaciones.

113
00:07:35,880 --> 00:07:38,310
Bien, pero antes terminar quería ver también otro detalle.

114
00:07:38,370 --> 00:07:39,630
Qué pasa si quito esto?

115
00:07:39,720 --> 00:07:40,380
Quitamos la fecha?

116
00:07:40,530 --> 00:07:46,410
Recuerden que antes, cuando enviamos el formulario con la fecha vacía, da un error personalizado que

117
00:07:46,500 --> 00:07:47,580
no coincide el formato.

118
00:07:47,640 --> 00:07:48,360
Pero qué pasa ahora?

119
00:07:48,450 --> 00:07:50,490
Si colocamos enviar no puede ser nulo.

120
00:07:50,490 --> 00:07:50,880
Se fija.

121
00:07:50,970 --> 00:07:52,140
Cambió el mensaje.

122
00:07:52,240 --> 00:07:52,470
Bueno.

123
00:07:52,530 --> 00:07:53,070
Por qué?

124
00:07:53,220 --> 00:07:55,680
Bueno, justamente si nos vamos a usuario es por esto.

125
00:07:55,830 --> 00:07:56,880
Es por la natación.

126
00:07:57,000 --> 00:08:02,880
Data en forma, claro, cuando es un string vacío, cuando se recibe un string de forma automática.

127
00:08:03,060 --> 00:08:10,590
Esta anotación Data Format intercepta el valor de la fecha y lo deja en null y por eso da el mensaje

128
00:08:10,740 --> 00:08:11,760
de que no puede ser nulo.

129
00:08:11,820 --> 00:08:14,930
Pero cuando viene con valor, bueno, lo trata de formatear, no?

130
00:08:14,950 --> 00:08:15,360
Cierto?

131
00:08:15,450 --> 00:08:18,120
Le dan formato según el que tenemos acá en el patrón.

132
00:08:18,240 --> 00:08:20,340
Si el formato coincide, está todo perfecto.

133
00:08:20,460 --> 00:08:27,020
Bien, conviertete string del campo a un objeto fecha del tipo yaba útil data.

134
00:08:27,220 --> 00:08:33,180
Ahora, si no coincide el formato en un formato incorrecto, bueno, da el error del formato justamente

135
00:08:33,180 --> 00:08:39,360
que colocamos acá de ser una fecha con formato, tanto si fijan el type misma, etc. Es decir, que

136
00:08:39,360 --> 00:08:46,320
no coincide el formato o el tipo de the string con el formato, la fecha y no lo puede convertir incluso.

137
00:08:46,380 --> 00:08:51,870
Por ejemplo, si comentamos acá solamente para probar no es necesario que lo hagan, lo voy a guardar.

138
00:08:52,020 --> 00:08:54,390
Está comentado, después lo voy a comentar.

139
00:08:55,080 --> 00:08:57,780
Si enviamos ahora va a decir otra cosa.

140
00:08:58,850 --> 00:09:04,280
Desde una fecha con formato se fija porque ya no se está aplicando este interceptor que realiza el cambio

141
00:09:04,400 --> 00:09:05,030
de la fecha.

142
00:09:05,270 --> 00:09:06,020
Volvemos.

143
00:09:06,110 --> 00:09:06,890
Guardamos.

144
00:09:06,980 --> 00:09:08,300
Lo dejamos como estaba.

145
00:09:09,110 --> 00:09:10,690
Enviar no puede ser null.

146
00:09:10,930 --> 00:09:11,300
Perfecto.

147
00:09:11,300 --> 00:09:11,780
Se fijan.

148
00:09:12,140 --> 00:09:14,300
Es mucho mejor utilizar el data.

149
00:09:14,300 --> 00:09:17,240
Informate con el formato que queramos implementar ahora.

150
00:09:17,300 --> 00:09:25,310
No siempre puede ser así, porque por ejemplo, si nuestro input es del tipo date y no text, el formato

151
00:09:25,310 --> 00:09:28,550
que tenemos que manejar en esta anotación tiene que ser específico.

152
00:09:28,640 --> 00:09:30,830
Pero bueno, eso lo vemos la siguiente clase.

153
00:09:31,020 --> 00:09:33,080
Y recuerden si colocamos qué cosa.

154
00:09:33,170 --> 00:09:39,050
Por ejemplo, a lo que queramos, cualquier texto que no sea fecha, pero también es decir quye cosa

155
00:09:39,050 --> 00:09:42,100
que no coincida con este formato va a dar terror.

156
00:09:43,820 --> 00:09:46,820
Y recuerden que también se puede personalizar para este campo.

157
00:09:46,910 --> 00:09:47,270
Cómo?

158
00:09:47,300 --> 00:09:50,930
Bueno, si nos vamos a Message Properties copiamos esto.

159
00:09:52,660 --> 00:09:55,930
Bueno, ya me imagino que ya lo saben, pero taip mis.

160
00:09:56,650 --> 00:10:03,460
Y acá el nombre del objeto con el cual se pasa la vista al formulario y acá el atributo.

161
00:10:04,600 --> 00:10:11,890
Recuerden que la N con mayúscula mismo nombre del atributo de la clase usuario mismo nombre, atributo,

162
00:10:12,070 --> 00:10:14,350
fecha N mayúscula nacimiento.

163
00:10:14,470 --> 00:10:24,010
Entonces por acá el campo fecha debe ser una fecha con formato tanto bueno fecha o fecha de nacimiento,

164
00:10:24,100 --> 00:10:26,590
pero como es un texto da lo mismo un mensaje da lo mismo.

165
00:10:26,740 --> 00:10:28,510
Guardamos, esperamos que se actualice.

166
00:10:28,990 --> 00:10:35,320
Ahora, si colocamos cualquier cosa, porque si el null se vacío no puede ser nulo y está bien, pero

167
00:10:35,330 --> 00:10:42,520
si colocamos otro formato, por ejemplo s el campo fecha debe ser una fecha en formato o lo que sea.

168
00:10:43,210 --> 00:10:43,540
Hola.

169
00:10:43,600 --> 00:10:45,890
Cualquier cosa enviar también.

170
00:10:46,240 --> 00:10:47,740
Solamente acepta ese formato.

171
00:10:47,870 --> 00:10:49,300
Bien, por ahora nada más.

172
00:10:49,390 --> 00:10:51,160
Continuamos en la siguiente clase.
