0

我希望将时间表示为“Thu Jan 01 08:40:38 GMT+01:00 1754”

所以我这样做了:

                Date datu = new Date();
                datu.setYear(1754);
                datu.setMonth(0);
                datu.setDate(1);
                DateFormat.format("%tc", datu);

                // DATU = Thu Jan 01 08:40:38 GMT+01:00 3654
                String startTime = datu.toGMTString();

现在的问题是我在代码中将年份设置为 1754。但是当我打印出来时。有3654?

编辑: datu.setYear(1754-1900) 可以做到这一点。但就没有别的办法了吗?

4

4 回答 4

1

请尝试这样:

SimpleDateFormat sdf = new SimpleDateFormat("E MMM dd hh:mm:ss 'GMT'Z yyyy");
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR,1754);
c.set(Calendar.MONTH, 0); // JAN
c.set(Calendar.DATE, 1);
System.out.println(sdf.format(new Date(c.getTimeInMillis())));

输出

Tue Jan 01 05:23:55 GMT+0800 1754
于 2012-04-20T09:25:21.427 回答
1

您使用的是什么版本的 Java API?我建议您改用 java.text.SimpleDateFormat 和 java.util.Calendar。你的代码看起来像这样:

Calendar cal = Calendar.getInstance();
cal.set(1754, 0, 1);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // <- customize your format
sdf.format(cal.getTime()); // <- get your string

date.toGMTString() 方法也已被弃用,因此最好避免使用它。

于 2012-04-20T08:06:42.863 回答
0

正如你所说, date.setYear(desired year-1900) 解决了这个问题。值得注意的是,该方法已被弃用,最好使用不需要从年份中减去 1900 的 Calendar 类。下面给出了一个代码片段,它将实现您使用日历所做的事情:

Calendar calendar =Calendar.getInstance();
calendar.setTime(date);// note that the date object here will be datu according to 
//your code. It could be any object of the Date class
int year = calendar.get(Calendar.YEAR);

希望这可以帮助。

如果它解决了您的问题,请随时标记为答案。祝你好运!

于 2012-04-20T07:59:55.577 回答
0

似乎 date.SetYear 已被弃用。根据文档,您应该改用 Calendar.set(Calendar.YEAR, year) 。

于 2012-04-20T07:55:22.873 回答