我尝试使用SimpleDateFormat格式化由3个整数表示的日期。 它看起来像这样:
...
SimpleDateFormat sdfHour = new SimpleDateFormat("HH");
SimpleDateFormat sdfMinute = new SimpleDateFormat("mm");
SimpleDateFormat sdfSecond = new SimpleDateFormat("ss");
Calendar c = Calendar.getInstance();
c.setTimeZone(TimeZone.getDefault());
int hours = c.get(Calendar.HOUR_OF_DAY);
int minutes = c.get(Calendar.MINUTE);
int seconds = c.get(Calendar.SECOND);
String string_hours = sdfHour.format(hours);
String string_minutes = sdfMinute.format(minutes);
String string_seconds = sdfSecond.format(seconds);
和
的输出Log.d("tag", "Time string is: " + string_hours + ":" + string_minutes + ":" + string_seconds);
总是
Time string is: 19:00:00
我在这里做错了什么?
答案 0 :(得分:4)
SimpleDateFormat.format需要Date,而不是int。您正在使用的方法,即接受长整数的重载版本,实际上是期望从纪元开始的毫秒,而不是您正在做的一分钟或一分钟。
使用它的正确方法应该是:
SimpleDateFormat sdfHour = new SimpleDateFormat("HH:mm:ss");
String timeString = sdfHour.format(new Date());
使用"新日期()"如本例所示,将为您提供当前时间。如果你需要格式化其他时间(比如一小时前,或者来自数据库等的东西......)传递给"格式"正确的日期实例。
如果由于某种原因你需要分开,那么你仍然可以使用它,但另一种方式:
SimpleDateFormat sdfHour = new SimpleDateFormat("HH");
SimpleDateFormat sdfMinute = new SimpleDateFormat("mm");
SimpleDateFormat sdfSecond = new SimpleDateFormat("ss");
Date now = new Date();
String string_hours = sdfHour.format(now);
String string_minutes = sdfMinute.format(now);
String string_seconds = sdfSecond.format(now);
答案 1 :(得分:1)
您不能像这样使用SimpleDateFormat
:
SimpleDateFormat sdfHour = new SimpleDateFormat("HH");
SimpleDateFormat sdfMinute = new SimpleDateFormat("mm");
SimpleDateFormat sdfSecond = new SimpleDateFormat("ss");
使用此:
long timeInMillis = System.currentTimeMillis();
Calendar cal1 = Calendar.getInstance();
cal1.setTimeInMillis(timeInMillis);
SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
String dateformatted = dateFormat.format(cal1.getTime());
参考this
答案 2 :(得分:1)
尝试这样的事情:
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
String CurrentTime = sdf.format(cal.getTime());
答案 3 :(得分:1)
您正在调用错误的format
方法。您应该为正确的参数提供Date
参数,而不是使用从Format
类继承的one:
public final String format(Object obj)
为什么会这样?因为Java中的自动装箱程序。您提供了int
,它会自动加框到Integer
Object