简体   繁体   English

GregorianCalendar输出:日期为java.util.GregorianCalendar [time = 1141556400000,areFieldsSet = true,areAllFieldsSet = true

[英]GregorianCalendar outputs: The date is java.util.GregorianCalendar[time=1141556400000,areFieldsSet=true,areAllFieldsSet=true

I have the following data in a text file which later I will Scanner in. 我的文本文件中包含以下数据,稍后我将在其中扫描程序。

17-Mar-2006 1100 1280
16-Jan-2002 1120 1230
15-Jun-2003 1140 1900

I'm building this data as an "Stockmarket" object. 我将这些数据构建为“股市”对象。 The instance variable "date" is declared as GregorianCalendar. 实例变量“日期”被声明为GregorianCalendar。 The constructor, String dt, should expect the form "dd-MMM-yyyy" in String. 构造函数String dt在String中应采用“ dd-MMM-yyyy”形式。 Same goes to the public String date(), it should return a string of the form"dd-MMM-yyyy". 公共String date()也是如此,它应返回形式为“ dd-MMM-yyyy”的字符串。 I done it in the following way, but outputs: The date is java.util.GregorianCalendar[time=1141556400000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="..... 我以以下方式完成操作,但输出:日期为java.util.GregorianCalendar [time = 1141556400000,areFieldsSet = true,areAllFieldsSet = true,lenient = true,zone = sun.util.calendar.ZoneInfo [id =“。 ....

Any idea on a fix? 对修复有任何想法吗?

public class Stockmarket{
    // instance variables
    private GregorianCalendar date; 
    private double opening;
    private double closing; 

    public Stockmarket(String dt, double opening, double closing)

    SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy", Locale.US);
    Date d = sdf.parse(dt);
    GregorianCalendar cal = (GregorianCalendar) Calendar.getInstance();
    cal.setTime(d);
    this.date=cal;
    this.opening=opening;
    this.closing=closing;
    }  

    public String date(){

    SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyyy, Locale.US");
    df.setCalendar(this.date);
    String date = df.format(this.date.getTime());
    return date;
    }

You can achieve what you want with SimpleDateFormat , if the format is known and uniformed. 如果格式已知且统一,则可以使用SimpleDateFormat实现所需的功能。

public class TestParse {
    public static void main(String[] args) {
        String myDate = "17-Mar-2006";

        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MMM-yyyy");
        Date date = null;
        try {
            date = simpleDateFormat.parse(myDate);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        GregorianCalendar calendar =  new GregorianCalendar();
        calendar.setTime(date);
        System.out.println(calendar.getTime());
    }
}

EDIT: Added more information based on question change 编辑:添加了基于问题更改的更多信息

the method getStringFromDate produces a formatted date of 17-Mar-2006 方法getStringFromDate产生格式化的日期为2006年3月17日

public class TestParse {
    public static void main(String[] args) {
        String myDate = "17-Mar-2006";
        Date date = getDateFromString(myDate);
        // Set the Calendar
        GregorianCalendar calendar = new GregorianCalendar();
        calendar.setTime(date);
        // format date
        String formattedDate = getStringFromDate(calendar);
        System.out.printf("The formatted date is : %s & the dates are equal %s%n", formattedDate, formattedDate.equals(myDate));
    }

    public static String getStringFromDate(GregorianCalendar calendar) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MMM-yyyy", Locale.US);
        simpleDateFormat.setCalendar(calendar);
        return simpleDateFormat.format(calendar.getTime());
    }

    public static Date getDateFromString(String input) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MMM-yyyy", Locale.US);
        Date date = null;
        try {
            date = simpleDateFormat.parse(input);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }
}

Your Stockmarket class Fixed type on format 您的股票市场类别固定类型的格式

    public class Stockmarket {
        // instance variables
        private GregorianCalendar date;
        private double opening;
        private double closing;

        public Stockmarket(String dt, double opening, double closing) {
            SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy", Locale.US);
            Date d = null;
            try {
                d = sdf.parse(dt);
            } catch (ParseException e) {
                e.printStackTrace();
            }
            GregorianCalendar cal = (GregorianCalendar) Calendar.getInstance();
            cal.setTime(d);
            this.date = cal;
            this.opening = opening;
            this.closing = closing;
        }

        public String date() {
            SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyyy", Locale.US);
            df.setCalendar(this.date);
            String date = df.format(this.date.getTime());
            return date;
        }
    }

Testing Class 测试班

public class TestParse {

    public void doTest()
    {
        Stockmarket stockmarket1 = new Stockmarket("17-Mar-2006",500,600);
        stockmarket1.date();
        System.out.println(stockmarket1.date());

        Stockmarket stockmarket2 = new Stockmarket("16-Jan-2002",500,600);
        stockmarket2.date();
        System.out.println(stockmarket2.date());

        Stockmarket stockmarket3 = new Stockmarket("15-Jun-2003",500,600);
        stockmarket3.date();
        System.out.println(stockmarket3.date());

    }
    public static void main(String[] args) {

        TestParse testParse = new TestParse();
        testParse.doTest();
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 应用DST更改时add()的java.util.GregorianCalendar问题 - java.util.GregorianCalendar issue with add() when applying DST changes java.util.GregorianCalendar类在不同Android版本中的奇怪行为 - Strange behavior of the java.util.GregorianCalendar class in different android versions JAVA - 从 JDatePicker 获取日期 - 无法将类 java.util.GregorianCalendar 转换为类 java.util.Date - JAVA - Getting a Date from JDatePicker - class java.util.GregorianCalendar cannot be cast to class java.util.Date JasperReports Server:在scriptlet上使用java.util.Calendar时出现“未配置java.util.GregorianCalendar”错误 - JasperReports Server: Getting “java.util.GregorianCalendar not configured” error when using java.util.Calendar at scriptlet 1976年3月28日到3月29日期间发生了什么与java.util.GregorianCalendar? - What happened between March 28th and March 29th, 1976 with the java.util.GregorianCalendar? 将java.util.GregorianCalendar.toString()重新转换回GregorianCalendar - Reconvert java.util.GregorianCalendar.toString() back to GregorianCalendar Java-GregorianCalendar - Java - GregorianCalendar 阳历日历 - GregorianCalendar 在GregorianCalendar ArrayList Java中添加日期元素 - Adding a date element in GregorianCalendar ArrayList Java 使用Java GregorianCalendar类打印正确的日期 - Printing the correct date with Java GregorianCalendar Class
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM