Java 如何在android中使用DateFormat.getDateTimeInstance()仅显示当前时间
我是android新手。在android中,我只想在文本视图中以hh:mm am/pm(例如:3:02 pm)格式显示当前时间,我使用以下代码Java 如何在android中使用DateFormat.getDateTimeInstance()仅显示当前时间,java,android,date-format,date-formatting,Java,Android,Date Format,Date Formatting,我是android新手。在android中,我只想在文本视图中以hh:mm am/pm(例如:3:02 pm)格式显示当前时间,我使用以下代码 String currentDateTimeString=DateFormat.getDateTimeInstance().format(新日期()); tv.setText(currentDateTimeString); 它给出了当前的日期、月份、年份和时间。但我只需要从中获取当前时间。有没有办法只显示时间?有人能帮我从上面的代码中获取没有日期的时间
String currentDateTimeString=DateFormat.getDateTimeInstance().format(新日期());
tv.setText(currentDateTimeString);
它给出了当前的日期、月份、年份和时间。但我只需要从中获取当前时间。有没有办法只显示时间?有人能帮我从上面的代码中获取没有日期的时间吗。[使用DateFormat.getDateTimeInstance()]startTime=“”+System.currentTimeMillis();
StringTokenizer tk=新的StringTokenizer(startTime.trim());
字符串date=tk.nextToken();
字符串时间=tk.nextToken();
SimpleDataFormat sdf=新的SimpleDataFormat(“hh:mm:ss”);
SimpleDataFormat sdfs=新SimpleDataFormat(“hh:mm a”);
日期dt;
试试{
dt=sdf.parse(时间);
System.out.println(“时间显示:”+sdfs.format(dt));//尝试以下代码
Date d=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("hh:mm a");
String currentDateTimeString = sdf.format(d);
tv.setText(currentDateTimeString);
试试这个:
<DigitalClock
android:id="@+id/digitalClock1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="DigitalClock" />
这是android的基本控制
System.out.println(new SimpleDateFormat("HH:mm:SS").format(new Date()));
Android时间选择器组件遵循链接
更多信息
它给出了当前的日期、月份、年份和时间,但是
我只需要从中获取当前时间
如果要执行此操作并尊重用户的偏好(例如12小时与24小时),请继续使用日期格式
,只需这样:
DateFormat.getTimeInstance(DateFormat.SHORT).format(new Date());
它给出了当前的日期、月份、年份和时间。但我只需要
从这个开始的当前时间
java.util.Date
对象不是像的实时日期对象;相反,它表示从称为“历元”的标准基准时间开始的毫秒数,即1970年1月1日00:00:00 GMT
(或UTC)。当您打印java.util.Date
的对象时,其toString
方法返回JVM时区中的日期时间,该值根据该毫秒值计算。如果您需要在不同的时区中打印日期时间,则需要将时区设置为SimpleDataFormat
,并从中获取格式化字符串,例如。
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX", Locale.ENGLISH);
sdf.setTimeZone(TimeZone.getTimeZone("America/New_York"));
System.out.println(sdf.format(date));
为了获得准确的时间,您只需将(a)yyyy-MM-dd'HH:MM:ss.SSSXXX
替换为HH:MM a
和(b)America/New_-York
替换为适用的时区
但是,java.util
Date-Time API及其格式化API,SimpleDataFormat
已过时且容易出错。建议完全停止使用它们,并切换到*
使用java.time
的解决方案,现代API:
输出:
11:59:07.443868
11:59 AM
了解更多关于java.time
、来自的*
*无论出于何种原因,如果您必须坚持使用Java 6或Java 7,您可以使用哪个backport将大部分Java.time功能移植到Java 6和7。如果您正在为Android项目工作,并且您的Android API级别仍然不符合Java-8,请检查并确认。
您想在文本视图中显示当前时间还是编辑文本?是的,这就是我需要的。谢谢。这是24小时时间还是12小时?12小时…这就是为什么我在am/PM中使用“a”的原因抱歉,我错误地否决了这个答案。实际上,这是唯一正确的答案。@AlexeyVMP谢谢,我进行了编辑,所以您现在应该可以删除否决或否决。这应该是正确的是公认的答案!谢谢分享。
import java.time.LocalTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
// Replace JVM's timezone i.e. ZoneId.systemDefault() with the applicable
// timezone e.g. ZoneId.of("Europe/London")
LocalTime time = LocalTime.now(ZoneId.systemDefault());
// Print the default format i.e. the value of time.toString()
System.out.println(time);
// Custom format
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("hh:mm a", Locale.ENGLISH);
String formattedTime = dtf.format(time); // Alternatively, time.format(dtf)
System.out.println(formattedTime);
}
}
11:59:07.443868
11:59 AM