Софтуерно Инженерство
Loading...
+ Нов въпрос
Hristo_Penchev avatar Hristo_Penchev 388 Точки

[Technical Issue] Java - Форматиране на LocalDateTime

Работя по задача 5 от домашното. По принцип става с println(LocalDateTime.now());, но излиза с разни стотни. Та реших да форматирам изходните данни, прочетох някои неща за изход от конзолата от книгата за Джава, но нещо не мога да се орпавя:

System.out.println("$td/$tm/$tY %$tH:$tM", LocalDateTime.now(), LocalDateTime.now(), LocalDateTime.now(), LocalDateTime.now(), LocalDateTime.now());

Явно нещо не правя както трябва, пише ми, че този формат е неприемлив. Идеята предполагам я разбирате. Някой може ли да ми помогне да си открия грешката? Благодаря предварително!

-1
Java Advanced 03/09/2014 21:51:19
a.angelov avatar a.angelov 1319 Точки
Best Answer

Имаш две грешки:

1. Ползваш printLn, а когато ползваш форматиращи стрингове трябва да използваш printf;

2. % указва, че следва форматиране, a за да покажеш коя променлива да се ползва от въведените след форматиращия стринг се ползва $, но с поредния номер на променливата - т.е. 1$, 2$ и т.н., т.е. не можеш да ползваш само $ без номер на променливата.

Ето как трябва да изглежда кодът ти без указване на променлива с $:

System.out.printf("%td/%tm/%tY %tH:%tM", LocalDateTime.now(), LocalDateTime.now(), LocalDateTime.now(), LocalDateTime.now(), LocalDateTime.now());

 

Ето още един по-кратък вариант - с 1$ указвам да се ползва първата променлива и съответно няма нужда от останалите четири LocalDateTime.now():

System.out.printf("%1$td/%1$tm/%1$tY %1$tH:%1$tM", LocalDateTime.now());

3
03/09/2014 10:54:41
KrasimirKirilov avatar KrasimirKirilov 5 Точки

        Date today = new Date();     
        
        System.out.printf("%1$td/%1$tm/%1$tY %1$tH:%1$tM", today);

// трябва да инмпортнеш и:  import java.util.Date;

//използва се printf не println ...ще има да се спъваме с Java след C# :)

1
03/09/2014 10:34:34
tdsamardzhiev avatar tdsamardzhiev 77 Точки

Има клас DateTimeFormatter, който е създаден специално за тази цел:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
String dateTimeNow = formatter.format(LocalDateTime.now());
System.out.println(dateTimeNow);

3
03/09/2014 11:17:17
veselinsavov avatar veselinsavov 219 Точки

>ТУК< можеш да намериш доста неща за форматирането.

1
Hristo_Penchev avatar Hristo_Penchev 388 Точки

Благодаря ви, с printf стана.

1
quickben avatar quickben 973 Точки

SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy");
SimpleDateFormat timeFormat = new SimpleDateFormat("hh:mm:ss a");
System.out.printf("The current date is: %s\n", dateFormat.format(date));
System.out.printf("The current time is: %s\n", timeFormat.format(date));

0
Krissycherrybomb avatar Krissycherrybomb 5 Точки

LocalDateTime current = LocalDateTime.now();
System.out.printf("%1$td.%1$tm.%1$tY",current);

 

Излиза грешка на printf , че методът е String,Object[] и не става за аргументите съответно String,LocalDateTime ..

0
Krissycherrybomb avatar Krissycherrybomb 5 Точки

Както и да пробвах излиза това и не мога да разбера къде е грешката

0
a.angelov avatar a.angelov 1319 Точки

Хм, много странно, не виждам да има някаква грешка...

0
RadheShyam avatar RadheShyam 2 Точки

To learn date and time in java refer date time formatting

In the link above you can learn lot of things about date time in java.

0