如何在android中使用DateFormat.getDateTimeInstance()仅显示当前时间

时间:2013-11-26 09:10:36

标签: java android date-format date-formatting

我是android新手。在android中我想在textview中只显示当前时间格式为hh:mm am / pm(例如:3:02 PM)我使用以下代码。

String currentDateTimeString = DateFormat.getDateTimeInstance().format(new Date()); tv.setText(currentDateTimeString);

它给出了当前的日期,月份,年份和时间。但我只需要从中获取当前时间。有没有办法只显示时间?任何人都可以帮助我从上面的代码中获取没有日期的时间。[using DateFormat.getDateTimeInstance()]

6 个答案:

答案 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*

使用现代 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.timeTrail: Date Time*


* 出于任何原因,如果您必须坚持使用 Java 6 或 Java 7,您可以使用 ThreeTen-Backport,它将大部分 java.time 功能向后移植到 Java 6 & 7. 如果您正在为 Android 项目工作并且您的 Android API 级别仍然不符合 Java-8,请检查 Java 8+ APIs available through desugaringHow to use ThreeTenABP in Android Project