Kalenderdatum naar jjjj-MM-dd formaat in java

Hoe u de kalenderdatum kunt converteren naar de indeling yyyy-MM-dd.

Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, 1);
Date date = cal.getTime();             
SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
String date1 = format1.format(date);            
Date inActiveDate = null;
try {
    inActiveDate = format1.parse(date1);
} catch (ParseException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
}

Dit levert inActiveDate = Wed Sep 26 00:00:00 IST 2012op. Maar wat ik nodig heb is 2012-09-26. Mijn doel is om deze datum te vergelijken met een andere datum in mijn database met behulp van Hibernate-criteria. Dus ik heb het datumobject nodig in de indeling yyyy-MM-dd.


Antwoord 1, autoriteit 100%

Een Java Dateis een container voor het aantal milliseconden sinds 1 januari 1970, 00:00:00 GMT.

Als je iets als System.out.println(date)gebruikt, gebruikt Java Date.toString()om de inhoud af te drukken.

De enige manier om dit te wijzigen is door Datete overschrijven en uw eigen implementatie van Date.toString()op te geven. Voordat je je IDE opstart en dit probeert, zou ik het niet doen; het zal de zaken alleen maar ingewikkelder maken. U kunt de datum beter opmaken in het formaat dat u wilt gebruiken (of weergeven).

Java 8+

LocalDateTime ldt = LocalDateTime.now().plusDays(1);
DateTimeFormatter formmat1 = DateTimeFormatter.ofPattern("yyyy-MM-dd", Locale.ENGLISH);
System.out.println(ldt);
// Output "2018-05-12T17:21:53.658"
String formatter = formmat1.format(ldt);
System.out.println(formatter);
// 2018-05-12

voorafgaand aan Java 8

U zou gebruik moeten maken van de Threeten Backport

Het volgende wordt gehandhaafd voor historische doeleinden (als het oorspronkelijke antwoord)

Wat u kunt doen, is het formaat de datum.

Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, 1);
SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(cal.getTime());
// Output "Wed Sep 26 14:23:28 EST 2012"
String formatted = format1.format(cal.getTime());
System.out.println(formatted);
// Output "2012-09-26"
System.out.println(format1.parse(formatted));
// Output "Wed Sep 26 00:00:00 EST 2012"

Dit zijn eigenlijk dezelfde datum, anders vertegenwoordigd.


2, Autoriteit 6%

Uw code is verkeerd. Geen punt van het parseren datum en bewaar dat als datumobject.

U kunt het object van de kalenderdatum opmaken wanneer u dat wilt weergeven en bewaart als een tekenreeks.

Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, 1);
Date date = cal.getTime();             
SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");          
String inActiveDate = null;
try {
    inActiveDate = format1.format(date);
    System.out.println(inActiveDate );
} catch (ParseException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
}

3, Autoriteit 4%

java.time

Het antwoord van MadProgrammeris correct, vooral de tip over Joda-Time. De opvolger van Joda-Time is nu ingebouwd in Java 8als de nieuwe java.time-pakket. Hier is een voorbeeldcode in Java 8.

Bij het werken met datum-tijd (in tegenstelling tot lokale datum), de tijdzonein kritiek. De dag van de maand is afhankelijk van de tijdzone. De Indiase tijdzoneis bijvoorbeeld +05:30(vijf en een half uur voor op UTC), terwijl Frankrijkslechts een uur voor is. Dus een moment op een nieuwe dag in India heeft één datum, terwijl hetzelfde moment in Frankrijk de datum van “gisteren” heeft. Het creëren van string-output zonder enige tijdzone of offset-informatie creëert dubbelzinnigheid. Je vroeg om JJJJ-MM-DD-uitvoer, dus ik heb het verstrekt, maar ik raad het niet aan. In plaats van ISO_LOCAL_DATEIk zou hebben gebruikt ISO_DATEom deze uitvoer te krijgen: 2014-02-25+05:30

ZoneId zoneId = ZoneId.of( "Asia/Kolkata" );
ZonedDateTime zonedDateTime = ZonedDateTime.now( zoneId );
DateTimeFormatter formatterOutput = DateTimeFormatter.ISO_LOCAL_DATE; // Caution: The "LOCAL" part means we are losing time zone information, creating ambiguity.
String output = formatterOutput.format( zonedDateTime );

Dump to console …

System.out.println( "zonedDateTime: " + zonedDateTime );
System.out.println( "output: " + output );

Wanneer het wordt uitgevoerd …

zonedDateTime: 2014-02-25T14:22:20.919+05:30[Asia/Kolkata]
output: 2014-02-25

JODA-TIME

Vergelijkbare code met behulp van de Joda-Time bibliotheek, de voorloper van Java.Time.

DateTimeZone zone = new DateTimeZone( "Asia/Kolkata" );
DateTime dateTime = DateTime.now( zone );
DateTimeFormatter formatter = ISODateTimeFormat.date();
String output = formatter.print( dateTime );

ISO 8601

Trouwens, dat formaat van uw invoerreeks is een standaardformaat, een van de verschillende handige datum-time string-indelingen gedefinieerd door ISO 8601 .

Beide joda-time en java.time gebruiken ISO 8601-indelingen standaard bij het parseren en genereren van string-representaties van verschillende datum-tijdwaarden.


4

public static void main(String[] args) {
    Calendar cal = Calendar.getInstance();
    cal.set(year, month, date);
    SimpleDateFormat format1 = new SimpleDateFormat("yyyy MM dd");
    String formatted = format1.format(cal.getTime());
    System.out.println(formatted);
}

Antwoord 5

Om een java.util.Dateobject te ontleden, moet je het eerst converteren naar String met je eigen formaat.

inActiveDate = format1.parse(  format1.format(date)  );

Maar ik denk dat je hier overbodig bent.


Antwoord 6

Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, 7);
Date date = c.getTime();
SimpleDateFormat ft = new SimpleDateFormat("MM-dd-YYYY");
JOptionPane.showMessageDialog(null, ft.format(date));

Hiermee wordt uw datum + 7 dagen weergegeven in maand-, dag- en jaarnotatie in een JOption-venster.


Antwoord 7

public static String ThisWeekStartDate(WebDriver driver) {
        Calendar c = Calendar.getInstance();
        //ensure the method works within current month
        c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
        System.out.println("Before Start Date " + c.getTime());
        Date date = c.getTime();
          SimpleDateFormat dfDate = new SimpleDateFormat("dd MMM yyyy hh.mm a");
          String CurrentDate = dfDate.format(date);
          System.out.println("Start Date " + CurrentDate);
          return CurrentDate;
    }
    public static String ThisWeekEndDate(WebDriver driver) {
        Calendar c = Calendar.getInstance();
        //ensure the method works within current month
        c.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
        System.out.println("Before End Date " + c.getTime());
        Date date = c.getTime();
          SimpleDateFormat dfDate = new SimpleDateFormat("dd MMM yyyy hh.mm a");
          String CurrentDate = dfDate.format(date);
          System.out.println("End Date " + CurrentDate);
          return CurrentDate;
    }

8

Ik heb deze code gevonden waar datum in een indeling wordt vergeleken om te vergelijken met het veld Datum in database … Misschien is dit mogelijk behulpzaam voor u …

Wanneer u de tekenreeks converteert naar datum met behulp van SimpledateFormat, is het moeilijk om te vergelijken met het veld Datum in MySQL-databases.

Dus converteer de Java-stringdatum in het formaat met Selecteer Str_to_date (‘Yourdate’, ‘% M /% D /% Y’) – & GT; In dit formaat krijgt u de exacte datumnotatie van het veld MySQL Datum.

http://javainfinite.com/java/java -Convert string-to-date-en-vergelijking /

Other episodes