Преобразование java.утиль.Дата в строку



Я хочу, чтобы преобразовать java.util.Date объект a String в Java.



формат 2010-05-30 22:15:52

1563   16  

16 ответов:

в Java преобразуйте дату в строку, используя строку формата:

// Create an instance of SimpleDateFormat used for formatting 
// the string representation of date (month/day/year)
DateFormat df = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");

// Get the date today using Calendar object.
Date today = Calendar.getInstance().getTime();        
// Using DateFormat format method we can create a string 
// representation of a date with the defined format.
String reportDate = df.format(today);

// Print what date is today!
System.out.println("Report Date: " + reportDate);

от http://www.kodejava.org/examples/86.html

Format formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String s = formatter.format(date);

Commons-lang DateFormatUtils полон вкусностей (если у вас есть commons-lang в вашем classpath)

//Formats a date/time into a specific pattern
 DateFormatUtils.format(yourDate, "yyyy-MM-dd HH:mm:SS");

tl; dr

myUtilDate.toInstant()  // Convert `java.util.Date` to `Instant`.
          .atOffset( ZoneOffset.UTC )  // Transform `Instant` to `OffsetDateTime`.
          .format( DateTimeFormatter.ISO_LOCAL_DATE_TIME )  // Generate a String.
          .replace( "T" , " " )  // Put a SPACE in the middle.

2014-11-14 14:05:09

java.время

современный способ с java.классы времени, которые теперь вытесняют проблемные старые устаревшие классы даты-времени.

сначала преобразуйте ваш java.util.Date до Instant. Элемент Instant класс представляет момент на временной шкале в UTC с разрешением наносекунд (до девяти (9) знаков после запятой фракция.)

преобразования в / из java.время выполняется новыми методами, добавленными к старым классам.

Instant instant = myUtilDate.toInstant();

обоих java.util.Date и java.time.Instant в UTC. Если вы хотите видеть дату и время в формате UTC, так тому и быть. Звоните toString чтобы создать строку в стандарте ISO 8601.

String output = instant.toString();  

2014-11-14T14:05:09Z

для других форматов, вам нужно преобразовать ваш Instant в тем более гибкий OffsetDateTime.

OffsetDateTime odt = instant.atOffset( ZoneOffset.UTC );

odt.toString (): 2014-11-14T14:05:09+00:00

чтобы получить строку в нужном формате, укажите DateTimeFormatter. Вы можете указать пользовательский формат. Но я бы использовал один из предопределенных форматеров (ISO_LOCAL_DATE_TIME), и заменить T в его выводе с пробелом.

String output = odt.format( DateTimeFormatter.ISO_LOCAL_DATE_TIME )
                   .replace( "T" , " " );

2014-11-14 14:05:09

кстати я не рекомендую такой формат, где вы намеренно теряете смещение от UTC или информация о часовом поясе. Создает двусмысленность относительно значения даты-времени этой строки.

также остерегайтесь потери данных, так как любая дробная секунда игнорируется (эффективно усекается) в представлении вашей строки значения даты-времени.

чтобы увидеть тот же самый момент через объектив какого-то конкретного регион времени применить ZoneId и ZonedDateTime.

ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = instant.atZone( z );

нмв.метод toString(): 2014-11-14T14:05:09-05:00[Америка/Монреале]

чтобы создать форматированную строку, сделайте то же самое, что и выше, но замените odt С zdt.

String output = zdt.format( DateTimeFormatter.ISO_LOCAL_DATE_TIME )
                   .replace( "T" , " " );

2014-11-14 14:05:09

при выполнении этого кода очень большое количество раз, вы можете быть немного более эффективным и избежать звонок в String::replace. Снижается, что также делает ваш код короче. Если это необходимо, укажите свой собственный шаблон форматирования в своем собственном , теперь режим обслуживания, советует миграцию на java.время.

дополнительные сведения см. В разделе элемент Oracle Tutorial. Поиск переполнения стека для многих примеров и объяснений.

большая часть java.функциональность time обратно портирована на Java 6 & 7 в ThreeTen-Backport и далее адаптируется к Android in ThreeTenABP (см. как использовать...).

The ThreeTen-Extra проект расширяет java.время с дополнительными занятиями. Этот проект является испытательным полигоном для возможных будущих дополнений к java.время.

Альтенативные однострочные в простой старой java:

String.format("The date: %tY-%tm-%td", date, date, date);

String.format("The date: %1$tY-%1$tm-%1$td", date);

String.format("Time with tz: %tY-%<tm-%<td %<tH:%<tM:%<tS.%<tL%<tz", date);

String.format("The date and time in ISO format: %tF %<tT", date);

использует форматер и относительный индексации вместо SimpleDateFormat что это не потокобезопасна, кстати.

немного более повторяющиеся, но нуждается только в одном заявлении. Это может быть удобно в некоторых случаях.

почему бы вам не использовать Joda (org.Джода.время.DateTime)? Это в основном один лайнер.

Date currentDate = GregorianCalendar.getInstance().getTime();
String output = new DateTime( currentDate ).toString("yyyy-MM-dd HH:mm:ss");

// output: 2014-11-14 14:05:09

похоже, что вы ищете SimpleDateFormat.

формат: гггг-ММ-ДД КК: мм: СС

public static String formateDate(String dateString) {
    Date date;
    String formattedDate = "";
    try {
        date = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss",Locale.getDefault()).parse(dateString);
        formattedDate = new SimpleDateFormat("dd/MM/yyyy",Locale.getDefault()).format(date);
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    return formattedDate;
}

самый простой способ использовать его следующим образом:

currentISODate = new Date().parse("yyyy-MM-dd'T'HH:mm:ss", "2013-04-14T16:11:48.000");

где "yyyy-MM-dd'T'HH: mm:ss" - это формат даты считывания

выход: ВС апр 14 16: 11: 48 EEST 2013

Примечания: чч против чч - HH относится к 24-часовому формату времени - чч-время в формате 12ч

Если вам нужно только время от даты, вы можете просто использовать функцию String.

Date test = new Date();
String dayString = test.toString();
String timeString = dayString.substring( 11 , 19 );

это автоматически сократит временную часть строки и сохранит ее внутри timeString.

вот примеры использования new Java 8 Time API в формате наследиеjava.util.Date:

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS Z")
        .withZone(ZoneOffset.UTC);
    String utcFormatted = formatter.format(date.toInstant()); 

    ZonedDateTime utcDatetime = date.toInstant().atZone(ZoneOffset.UTC);
    String utcFormatted2 = utcDatetime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS Z"));
    // gives the same as above

    ZonedDateTime localDatetime = date.toInstant().atZone(ZoneId.systemDefault());
    String localFormatted = localDatetime.format(DateTimeFormatter.ISO_ZONED_DATE_TIME);
    // 2011-12-03T10:15:30+01:00[Europe/Paris]

    String nowFormatted = LocalDateTime.now().toString(); // 2007-12-03T10:15:30.123

это приятно о DateTimeFormatter что его можно эффективно кэшировать, поскольку он потокобезопасен (в отличие от SimpleDateFormat).

список предопределенных fomatters и pattern notation reference.

благодарности:

как анализировать / форматировать даты с LocalDateTime? (Java 8)

Java8 Ява.утиль.Преобразование даты в java.время.ZonedDateTime

форматировать мгновенный в строку

в чем разница между java 8 ZonedDateTime и OffsetDateTime?

попробуйте это,

import java.text.ParseException;
import java.text.SimpleDateFormat;

public class Date
{
    public static void main(String[] args) 
    {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String strDate = "2013-05-14 17:07:21";
        try
        {
           java.util.Date dt = sdf.parse(strDate);         
           System.out.println(sdf.format(dt));
        }
        catch (ParseException pe)
        {
            pe.printStackTrace();
        }
    }
}

выход:

2013-05-14 17:07:21

для получения дополнительной информации о форматировании даты и времени в java см. ссылки ниже

Справочный Центр Oracle

пример даты и времени в java

в одном кадре ;)

чтобы получить дату

String date = new SimpleDateFormat("yyyy-MM-dd",   Locale.getDefault()).format(new Date());

чтобы получить время

String time = new SimpleDateFormat("hh:mm", Locale.getDefault()).format(new Date());

чтобы получить дату и время

String dateTime = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss", Locale.getDefaut()).format(new Date());

удачи в кодировании :)

public static void main(String[] args) 
{
    Date d = new Date();
    SimpleDateFormat form = new SimpleDateFormat("dd-mm-yyyy hh:mm:ss");
    System.out.println(form.format(d));
    String str = form.format(d); // or if you want to save it in String str
    System.out.println(str); // and print after that
}

давайте попробуем это

public static void main(String args[]) {

    Calendar cal = GregorianCalendar.getInstance();
    Date today = cal.getTime();
    DateFormat df7 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    try {           
        String str7 = df7.format(today);
        System.out.println("String in yyyy-MM-dd format is: " + str7);          
    } catch (Exception ex) {
      ex.printStackTrace();
    }
}

или функция полезности

public String convertDateToString(Date date, String format) {
    String dateStr = null;
    DateFormat df = new SimpleDateFormat(format);

    try {
        dateStr = df.format(date);
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    return dateStr;
}

С конвертировать дату в строку в Java

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String date = "2010-05-30 22:15:52";
    java.util.Date formatedDate = sdf.parse(date); // returns a String when it is parsed
    System.out.println(sdf.format(formatedDate)); // the use of format function returns a String

Comments

    Ничего не найдено.