我是android新手。在android中我想在textview中只显示当前时间格式为hh:mm am / pm(例如:3:02 PM)我使用以下代码。
String currentDateTimeString = DateFormat.getDateTimeInstance().format(new Date());
tv.setText(currentDateTimeString);
它给出了当前的日期,月份,年份和时间。但我只需要从中获取当前时间。有没有办法只显示时间?任何人都可以帮助我从上面的代码中获取没有日期的时间。[using DateFormat.getDateTimeInstance()]
答案 0 :(得分:8)
尝试以下代码
Date d=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("hh:mm a");
String currentDateTimeString = sdf.format(d);
tv.setText(currentDateTimeString);
答案 1 :(得分:7)
它给出了当前的日期,月份,年份和时间,但是 我需要从中获得当前时间。
如果你想这样做和尊重用户偏好(例如12对24小时制),那么继续使用DateFormat
,只有这样:
DateFormat.getTimeInstance(DateFormat.SHORT).format(new Date());
答案 2 :(得分:1)
试试这个:
<DigitalClock
android:id="@+id/digitalClock1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="DigitalClock" />
这是android的基本控制。
答案 3 :(得分:0)
startTime = ""+System.currentTimeMillis();
StringTokenizer tk = new StringTokenizer(startTime.trim());
String date = tk.nextToken();
String time = tk.nextToken();
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
SimpleDateFormat sdfs = new SimpleDateFormat("hh:mm a");
Date dt;
try {
dt = sdf.parse(time);
System.out.println("Time Display: " + sdfs.format(dt)); // <-- I got result here
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
答案 4 :(得分:0)
System.out.println(new SimpleDateFormat("HH:mm:SS").format(new Date()));
Android时间选择器组件会点击链接http://developer.android.com/guide/topics/ui/controls/pickers.html
了解更多信息
http://developer.android.com/reference/java/text/SimpleDateFormat.html
答案 5 :(得分:0)
它给出了当前的日期、月份、年份和时间。但我只需要得到 当前时间从这里开始。
java.util.Date
对象不是像 modern Date-Time types 那样真正的 Date-Time 对象;相反,它表示自称为“纪元”的标准基准时间以来的毫秒数,即 January 1, 1970, 00:00:00 GMT
(或 UTC)。当您打印 java.util.Date
的对象时,其 toString
方法返回 JVM 时区中的 Date-Time,根据该毫秒值计算得出。如果您需要在不同的时区打印日期时间,则需要将时区设置为 SimpleDateFormat
并从中获取格式化的字符串,例如
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'T'HH:mm:ss.SSSXXX
替换为 hh:mm a
,并将 (b) America/New_York
替换为适用的时区。
但是,java.util
日期时间 API 及其格式 API SimpleDateFormat
已过时且容易出错。建议完全停止使用它们并切换到 modern Date-Time API*。
java.time
的解决方案: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
从 modern Date-Time API 中详细了解 java.time
,Trail: Date Time*。
* 出于任何原因,如果您必须坚持使用 Java 6 或 Java 7,您可以使用 ThreeTen-Backport,它将大部分 java.time 功能向后移植到 Java 6 & 7. 如果您正在为 Android 项目工作并且您的 Android API 级别仍然不符合 Java-8,请检查 Java 8+ APIs available through desugaring 和 How to use ThreeTenABP in Android Project。