java - today - ¿Cómo puedo obtener una fecha de mi calendario?
java date today (3)
Tengo un Map
contiene la fecha de nacimiento de una persona como GregorianCalendar
.
Por ejemplo:
{
motherEmailID=null,
coreType=Ticket,
_NULL=null,
additionalFaclitiesProvided=[],
dateOfBirth=java.util.GregorianCalendar[
time=585340200000,
areFieldsSet=false,
areAllFieldsSet=false,
lenient=true,
zone=sun.util.calendar.ZoneInfo[id="GMT",
offset=0,
dstSavings=0,
useDaylight=false,
transitions=0,
lastRule=null],
firstDayOfWeek=1,
minimalDaysInFirstWeek=1,
ERA=1,
YEAR=1988,
MONTH=6,
WEEK_OF_YEAR=30,
WEEK_OF_MONTH=4,
DAY_OF_MONTH=20,
DAY_OF_YEAR=202,
DAY_OF_WEEK=4,
DAY_OF_WEEK_IN_MONTH=3,
AM_PM=0,
HOUR=0,
HOUR_OF_DAY=0,
MINUTE=0,
SECOND=0,
MILLISECOND=0,
ZONE_OFFSET=19800000,
DST_OFFSET=0],
targetEnd=null,
year_semester=null
}
Necesito una Date
, pero en mi base de datos está solo en formato de Calendar
. El tipo de datos de la columna en la base de datos es DateTime
. ¿Cómo puedo obtener la fecha de nacimiento en un formato de Date
?
Copia y ejecuta el ejemplo.
Simplemente cambie el modo para probar diferentes condiciones de conmutación.
Para la encapsulación solo se hacen par de métodos privados. El formateo de la fecha no es su tarea, ya que el método ahora regresa y le corresponde a la persona que llama usar el formato que desee.
import java.util.Date;
import java.util.GregorianCalendar;
public class RandomDateOfBirthGenerator {
private static GregorianCalendar gc = new GregorianCalendar();
public static enum Mode {
SENIOR, ADULT, YOUTH, CHILD
}
public static Date generateRandomDateOfBirth(Mode mode) {
int year = 0;
switch(mode){
case SENIOR:
year = randBetween(1900, 1940);
break;
case ADULT:
year = randBetween(1941, 1995);
break;
case YOUTH:
year = randBetween(1995, 2002);
break;
case CHILD:
year = randBetween(2002, 2014);
break;
}
gc.set(gc.YEAR, year);
int dayOfYear = randBetween(1, gc.getActualMaximum(gc.DAY_OF_YEAR));
gc.set(gc.DAY_OF_YEAR, dayOfYear);
return gc.getTime();
}
private static int randBetween(int start, int end) {
return start + (int) Math.round(Math.random() * (end - start));
}
public static void main(String[] args) {
System.out.println(generateRandomDateOfBirth(Mode.CHILD));
}
}
De java.sql.Date
a java.util.Calendar
(o java.util.GregorianCalendar
)
Calendar cal = new GregorianCalendar();
cal.setTime(date); // java.sql.Date date;
// then set the GregorianCalendar in your map
map.put(''dateOfBirth'', cal);
De java.util.Calendar
a java.sql.Date
java.sql.Date date = new java.sql.Date(map.get(''dateOfBirth'').getTimeInMillis());
** NOTA **
java.sql.Timestamp
es un hermano de java.sql.Date
y ambos amplían java.util.Date
, por lo tanto, puede usar cualquiera de las dos formas.
Además, para convertir una cadena de fecha en un objeto de fecha, use SimpleDateFormat :
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US);
Date d = sdf.parse("2010-08-26 8:34:00");
Calendar cal = Calendar.getInstance();
cal.setTime(d);
Y para revertirlo.
String dateStr1 = sdf.format(cal.getTime());
// or
String dateStr2 = sdf.format(date); // java.sql.Date / java.util.Date
Calendar calendar = ( Calendar ) thatMap.get("dateOfBirth");
Date date = calendar.getTime();
Aquí hay una muestra que puede usar para probarla y ver que hace lo que necesita.
import java.util.*;
import java.text.*;
public class GetDate {
public static void main( String [] args ) {
Map map = new HashMap();
map.put("dateOfBirth", Calendar.getInstance() );
map.put("additionalFaclitiesProvided", new ArrayList() );
/// etc.
System.out.println( map );
Calendar cal = ( Calendar ) map.get("dateOfBirth");
Date date = cal.getTime();
// Addressing your comment:
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
System.out.println( "The date is: "+ sdf.format( date ) );
}
}
Salida:
java GetDate
{dateOfBirth=java.util.GregorianCalendar[
time=1282824447050,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[
id="America/Mexico_City",offset=-21600000,dstSavings=3600000,useDaylight=true,transitions=99,lastRule=java.util.SimpleTimeZone[
id=America/Mexico_City,offset=-21600000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=3,startMonth=3,startDay=1,
startDayOfWeek=1,startTime=7200000,startTimeMode=0,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=7200000,endTimeMode=0
]
],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2010,MONTH=7,WEEK_OF_YEAR=35,WEEK_OF_MONTH=4,DAY_OF_MONTH=26,DAY_OF_YEAR=238,DAY_OF_WEEK=5,
DAY_OF_WEEK_IN_MONTH=4,AM_PM=0,HOUR=7,HOUR_OF_DAY=7,MINUTE=7,SECOND=27,MILLISECOND=50,ZONE_OFFSET=-21600000,DST_OFFSET=3600000]**, additionalFaclitiesProvided=[]
}
La fecha es: 26.08.2010