2016-08-13 2 views
2

Итак, у меня есть два класса: один с методом toString, и мне нужно, чтобы одно из полей оно печаталось как дата и время, но мне тяжело это делать. Вот мой электронный класс (основные поля, конструкторы, методы получения и установки:., представляющий gregorian Calendar в методе toString

import java.util.Calendar; 
import java.util.GregorianCalendar; 
import java.util.Comparator; 
import java.util.Date; 

public class Email { 

private String to; 
private String cc; 
private String bcc; 
private String subject; 
private String body; 
private GregorianCalendar timestamp; //time that email was created 



public Email(String to, String cc, String bcc, String subject, String body) { 
    super(); 
    this.to = to; 
    this.cc = cc; 
    this.bcc = bcc; 
    this.subject = subject; 
    this.body = body; 
    timestamp = (GregorianCalendar) new GregorianCalendar().getInstance(); 


} 
public String getTo() { 
    return to; 
} 
public void setTo(String to) { 
    this.to = to; 
} 
public String getCc() { 
    return cc; 
} 
public void setCc(String cc) { 
    this.cc = cc; 
} 
public String getBcc() { 
    return bcc; 
} 
public void setBcc(String bcc) { 
    this.bcc = bcc; 
} 
public String getSubject() { 
    return subject; 
} 
public void setSubject(String subject) { 
    this.subject = subject; 
} 
public String getBody() { 
    return body; 
} 
public void setBody(String body) { 
    this.body = body; 
} 

public Date getTimestamp() { 
    return timestamp.getTime(); 
} 
public void setTimestamp(GregorianCalendar timestamp) { 
    this.timestamp = timestamp; 
} 

А вот мой класс Папка, которая содержит объекты электронной почты я взял только за исключением этого метода, чтобы сделать его проще посмотреть по адресу:

import java.sql.Timestamp; 
import java.util.*; 

public class Folder implements Comparable{ 

private ArrayList<Email> emails; 
private String name; 
private String currentSortingMethod; 

//constructors, getters, setters and other methods omitted 

public String toString(){ 
    String a = ""; 
    int j = 1; 
    for(int i = 0; i < emails.size(); i++){ 
     String k = Integer.toString(j); 
     a += String.format("%-8s %-5s %-8s %-1s %10s", " "+ k +" ", "|" , emails.get(i).getTimestamp(), "|", emails.get(i).getSubject()+ " \n"); 
     j = Integer.parseInt(k); 
     j++; 
    } 

      return(String.format("%-8s %-5s %-8s %-1s %10s", "Index", "|", "Time", "|", " Subject") + "\n" + "-------------------------------------\n" + a); 
} 

метод ToString должен напечатать что-то вроде этого

Index |  Time  | Subject 
------------------------------------- 
    1  |  Time  |  e 
    2  |  Time  |  d 
    3  |  Time  |  c 
    4  |  Time  |  b 
    5  |  Time  |  a 

она отлично работает для других полей, но мне нужно в колонке «время» наполняться время s когда этот объект электронной почты был создан. Пример: 12:38 PM 4/8/2012

Большое вам спасибо за помощь!

+0

Похоже, что вы должны использовать 'SimpleDateFormat', в основном, или средства даты и времени' String.format' ... вы что-то пробовали? Также обратите внимание, что если ваш вопрос действительно «Как преобразовать« GregorianCalendar »в« String »в определенном формате?» то 95% деталей, которые вы предоставили в вопросе, не имеют значения. –

+0

Не могли бы вы объяснить, как использовать simpleDateFormat в этом контексте? и будет ли он работать как строка в формате String или потребовал бы преобразования –

ответ

1

Я провел это локально, и он работает .. см. Ниже. что вы получаете в поле timestamp ur?

Index |  Time  | Subject 
------------------------------------- 
    1  |  Fri Aug 12 18:16:59 PDT 2016 | subject 
    2  |  Fri Aug 12 18:17:00 PDT 2016 | subject 
+0

Это было бы прекрасно, но я получаю сообщение об ошибке «Метод getTimestamp() не определен для типа Email« –

+0

не уверен, что u удалить импорт java.sql.Timestamp и проверить? а также я замечаю, что в конструкторе электронной почты у вас есть только метка времени, а не this.timestamp не то, что это важно, но – user641887

+0

Это сработало! Я не уверен, кто это сделал, но я изменил эти две вещи, которые вы сказали, и теперь я получаю дату. Спасибо огромное! –