2012-04-20 30 views
0

我想respresented因为这 “周四1月1八点40分38秒GMT + 01:00 1754” 时时间特定格式的Android的Java

,所以我这样做:

   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)可以做到这一点。但不是有另一种方式吗?

回答

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 
0

看来那个日期.SetYear是deprecated。根据文档,您应该使用Calendar.set(Calendar.YEAR,year)来代替。

0

正如你所说,date.setYear(希望年1900年)解决了这个问题。值得注意的是,该方法已弃用,因此使用Calendar类并不需要从年份中减去1900。代码段将实现您正在使用的日历做的是下面给:

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); 

希望这有助于。

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

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()方法也已经过时,所以最好避免。

+0

你会发现这里所有的格式设置模式的元素[链接](http://docs.oracle.com/javase/6 /docs/api/java/text/SimpleDateFormat.html) – Kaupo 2012-04-20 08:30:56