2010-05-31 12 views

Odpowiedz

24
// On the form: dow mon dd hh:mm:ss zzz yyyy 
new Date().toString(); 
+2

To pokaże datę i godzinę, a nie tylko bieżącą datę. – Adamski

+44

Przepraszam za nadmierną wygraną. – jasonmp85

+1

Format używany przez tę metodę jest okropny. Ponadto domyślna strefa czasowa twojego KVM jest domyślnie stosowana, więc Twoje wyniki będą się różnić. A te kłopotliwe klasy są teraz starsze, wyparte przez klasy java.time. Zobacz [Oracle Tutorial] (https://docs.oracle.com/javase/tutorial/datetime/TOC.html). –

11

Użyj implementacji DateFormat; na przykład SimpleDateFormat.

DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); 
String data = df.format(new Date()); 
+0

FYI, te kłopotliwe klasy są już starsze, wyparte przez klasy java.time. Zobacz [Oracle Tutorial] (https://docs.oracle.com/javase/tutorial/datetime/TOC.html). –

55
// GET DATE & TIME IN ANY FORMAT 
import java.util.Calendar; 
import java.text.SimpleDateFormat; 
public static final String DATE_FORMAT_NOW = "yyyy-MM-dd HH:mm:ss"; 

public static String now() { 
Calendar cal = Calendar.getInstance(); 
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW); 
return sdf.format(cal.getTime()); 
} 

pobranych z here

+0

Najlepsza odpowiedź na używanie kalendarza zamiast daty. – Random

+4

Jestem zdezorientowany. W jakim wszechświecie "Kalendarz" jest bardziej pożądany niż "Data"? – jasonmp85

+4

Nadal używa on 'Date', ponieważ' Calendar # getTime() 'zwraca' Date' ... – brimborium

168
String date = new SimpleDateFormat("dd-MM-yyyy").format(new Date()); 
+11

Chciałbym dać więcej niż 1 głos. – TimeTrap

+0

Zastosowano połączenie tego i odpowiedzi poniżej poniżej, aby uzyskać termin. C: –

+0

@Ian Purton Czy data ciągu w UTC tz ..? –

8

szybciej:

String date = FastDateFormat.getInstance("dd-MM-yyyy").format(System.currentTimeMillis()); 
+1

Wymaga org.apache.commons –

1

tl; dr

LocalDate.now() 
     .toString() 

2017-01-23

Lepiej wyraźnie określić żądaną/spodziewaną strefę czasową.

LocalDate.now(ZoneId.of("America/Montreal")) 
     .toString() 

java.time

Nowoczesny sposób jak Java 8 i później jest z ramami java.time.

Określ strefę czasową, ponieważ w danym momencie data zmienia się na całym świecie.

ZoneId zoneId = ZoneId.of("America/Montreal") ; // Or ZoneOffset.UTC or ZoneId.systemDefault() 
LocalDate today = LocalDate.now(zoneId) ; 
String output = today.toString() ; 

2017-01-23

Domyślnie masz ciąg w standardowym formacie ISO 8601.

Dla innych formatów użyj klasy java.time.format.DateTimeFormatter.

O java.time

Ramy java.time jest wbudowana w Java 8 i późniejszych. Klasy te zastępują kłopotliwe stare klasy czasu i daty, takie jak java.util.Date, .Calendar, .

Projekt Joda-Time, teraz w maintenance mode, zaleca migrację do java.time. Aby uzyskać więcej informacji, zobacz

. I wyszukaj Stack Overflow dla wielu przykładów i objaśnień.

Znaczna część funkcjonalności java.time powraca walcowy Java 6 & 7 w ThreeTen-Backport i ponadto dostosowany do Android w ThreeTenABP (patrz How to use…).

Projekt ThreeTen-Extra rozszerza java.time o dodatkowe klasy. Ten projekt jest poligonem wskazującym na możliwe przyszłe dodatki do java.time. Możesz znaleźć tutaj kilka użytecznych klas, takich jak Interval, YearWeek, YearQuarter i więcej.

0

Większość odpowiedzi jest/była ważna. Nowa modyfikacja API JAVA do obsługi Danych sprawiła, że ​​nieco wcześniejsza niejednoznaczność w przetwarzaniu daty w java została zmniejszona.

Otrzymasz przestarzałą wiadomość dla podobnych połączeń.

new Date() // deprecated 

Powyższe wywołanie umożliwiło programistom założenie, że nowy obiekt Date da obiekt Date z bieżącym znacznikiem czasu. To zachowanie nie jest spójne z innymi klasami Java API.

Nowym sposobem jest użycie instancji Calendar.

new SimpleDateFormat("yyyy-MM-dd").format(Calendar.getInstance().getTime() 

Również tutaj konwencja nazewnictwa nie jest idealna, ale jest dobrze zorganizowana. Dla osoby takiej jak ja, która ma problemy z zapychaniem rzeczy, ale nigdy nie zapomni czegoś, co brzmi/wydaje się logiczne, jest to dobre podejście.

To jest bardziej synonimem prawdziwym życiu

  1. Dostajemy obiekt Kalendarz i patrzymy na czas w nim. (musisz się zastanawiać, czy żadne ciało nie dostaje czasu z kalendarza, dlatego powiedziałem, że nie jest idealny.Ale to inny temat w ogóle)
  2. Następnie chcemy daty w prostym formacie tekstowym, więc używamy Klasa narzędzia SimpleDateFormat, która pomaga nam formatować datę od kroku 1. Użyłem yyyy, MM, dd jako parametry w formacie. Supported date format parameters

Jeszcze jeden sposób, aby to zrobić jest użycie Joda czas API

new DateTime().toString("yyyy-MM-dd") 

lub większego trudu

new DateTime(Calendar.getInstance().getTime()).toString("yyyy-MM-dd") 

zarówno zwróci ten sam rezultat.

+0

FYI, kłopotliwych starych klas daty i czasu, takich jak ['java.util.Date'] (https://docs.oracle.com/javase/8/docs/api/java/util /Date.html), 'java.util.Calendar' i' java.text.SimpleTextFormat' są teraz [starszeństwem] (https://en.wikipedia.org/wiki/Legacy_system), wypierane przez [java.time ] (https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html) klasy. Ponadto projekt [Joda-Time] (http://www.joda.org/joda-time/) jest teraz w [trybie konserwacji] (https://en.wikipedia.org/wiki/Maintenance_mode), z zespół doradzający przy migracji do java.time. –

+0

@BasilBourque To właśnie miałem na myśli w mojej odpowiedzi, że najlepsza głosowana odpowiedź jest właściwa, ale nie dotyczy aktualnego dewelopera. W końcu java będzie mieć klasę Clock, a Clock.getTime() będzie znacznie bardziej sensownym i realistycznym naśladowaniem niż klasy Date, DateTime lub Time. Programiści Javy muszą wiedzieć, że OOPS zaczął jako coś, co naśladuje rzeczywiste scenariusze. –

+0

FYI, implementacja 'Clock' w języku Java 8 jest dokładnie taka sama, jak w starszych klasach. Tylko w Javie 9 pojawia się nowa implementacja, zdolna do uchwycenia aktualnego momentu z rozdzielczością tak wysoką jak nanosekundy. –

-3
public static Date getDateByString(String dateTime) { 
     if(dateTime==null || dateTime.isEmpty()) { 
      return null; 
     } 
     else{ 
      String modified = dateTime + ".000+0000"; 
      DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); 
      Date dateObj = new Date(); 
      Date dateObj1 = new Date(); 
      try { 
       if (dateTime != null) { 
        dateObj = formatter.parse(modified); 
       } 

      } catch (ParseException e) { 
       e.printStackTrace(); 
      } 

      return dateObj; 
     } 

    } 
+0

Możemy przekazać dowolny format, z którego kiedykolwiek korzystasz. –

+1

Niektóre wyjaśnienia na temat tego fragmentu kodu byłyby prawdopodobnie korzystne. – Pyves

+1

Odpowiedź nie dotyczy pytania. I Nie, nie możesz przekazać daty w jakimkolwiek formacie "String" do swojej funkcji. –

1

Na czasie YYYY-MM-dd

String time = new DateTime(yourData).toString("yyyy-MM-dd"); 

I Biblioteki datetime:

importu org.joda.time.DateTime;

+0

A czym jest biblioteka "DateTime'? Odpowiedź na przepełnienie stosu powinna mieć pewne wyjaśnienie, ponieważ ta witryna ma być czymś więcej niż biblioteką snippet. –

Powiązane problemy