2014-12-08 2 views
1

я могу получить дату и время печати на экране, но я не могу заставить его печатать на указанный текст документа:Как распечатать текущую дату и время для внешнего текстового документа?

import java.sql.Timestamp; 
import java.util.Date; 
import java.io.FileNotFoundException; 
import java.io.PrintStream; 
import java.io.FileWriter; 

public class GetCurrentTimeStamp 
{ 
    public static void main(String[] args) throws FileNotFoundException 
    { 
    PrintStream output = new PrintStream ("transaction-list.txt"); 
    java.util.Date date= new java.util.Date(); 

    System.out.print(date); 
    output.close(); 
    } 
} 
+0

Похоже, вы создаете 'output' и даже не используете его, прежде чем закрывать его? Что за вопрос? – Krease

ответ

2

попробовать это:

output.print(date); 

вместо System.out.print(date);

1

System.out.print() записывает в системную консоль, а не в файл. Вы создаете PrintStream, но затем записываете вывод даты на консоль. Попробуйте это:

PrintStream ps = new PrintStream("transaction-list.txt"); 
Date date = new Date(); 
ps.println(date.toString()); 
ps.close 
0

Попробуйте

PrintWriter output = new PrintWriter(new BufferedWriter(new FileWriter("transaction-list.txt", true))) // take away true, if you dont want it to append. 
output.println(date); 
0

ТЛ; Др

Современный способ получить текущее время в UTC:

String output = Instant.now().toString(); // In UTC, standard format. 

или зональные:

String output = ZonedDateTime.now(ZoneId.of("America/Montreal")).toString(); 

java.time

Другие ответы правильны, но использование java.util.Date устарела в настоящее время классами java.time встроенные в Java 8 и более поздних версий.

Класс Instant представляет собой момент на временной шкале в UTC с разрешением до наносекунд.

Instant instant = Instant.now(); 

Стандартный формат, используемый ISO 8601toString может быть все, что вам нужно. Z на конце короткое для Zulu и означает UTC.

String output = Instant.now().toString(); // 2011-12-03T10:15:30.728Z 

Как правило, лучше всего выполнять бизнес-логику и обмен данными в UTC. Но если вы ожидаете от своего пользователя или приемника данных, вы можете применить часовой пояс (ZoneId), чтобы получить объект ZonedDateTime. Укажите proper time zone name, а не 3-4 аббревиатуры, такие как EST или IST видны в прессе.

ZoneId zoneId = ZoneId.of("America/Montreal"); 
ZonedDateTime zdt = ZonedDateTime.ofInstant(instant , zoneID); 
String output = zdt.toString(); // 2011-12-03T05:15:30.728-05:00[America/Montreal] 

Вы можете пропустить Instant объект в качестве ярлыка.

ZonedDateTime zdt = ZonedDateTime.now(zoneId); 

Бросьте все это вместе для однострочной линии.

String output = ZonedDateTime.now(ZoneId.of("America/Montreal")).toString(); 

Для других форматов, поиск переполнения стека для DateTimeFormatter.

Смежные вопросы