【问题标题】:How to get input as a time from EditText in Android?如何从 Android 中的 EditText 获取输入时间?
【发布时间】:2021-09-15 00:23:32
【问题描述】:

如何在 Android 中从EditText 获取时间输入?

我想从EditText 获得时间并想在handler 中使用该时间。

示例:

“00:00:03”需要转换为“3000”毫秒。

有什么想法吗?

【问题讨论】:

标签: java android datetime time android-edittext


【解决方案1】:

如果按照您的示例,它总是采用 HH:mm:ss 格式,您可以执行以下操作:

    val time = etTime.text.toString()
    val units = time.split(":")  // will split the string to array of 3 elements
    val hours = units[0].toInt()  // 1st element
    val minutes = units[1].toInt()  // 2nd element
    val seconds = units[2].toInt()  // 3rd element
    val totalTimeInMillis =
        ((hours * 3600) + (minutes * 60) + seconds) * 1000  // converting each unit to seconds and total sum to millis

应该这样做。如果您的时间将在不同情况下采用不同的格式,请相应地处理。如果它过于动态,请使用 SimpleDateFormat 之类的东西处理它,以始终以某种格式获取时间,然后您可以再次使用相同的逻辑。您还可以将其定义为辅助方法并在多个地方重用它,从给定的时间格式返回毫秒。

【讨论】:

    【解决方案2】:

    从您的 EditText 中获取值

    EditText txt = findViewById(R.id.edit);
    String time = txt.getText().toString();
    

    然后使用 Java 中的 LocalTime 类

    LocalTime localTime = LocalTime.parse(time);
    int millis = localTime.toSecondOfDay() * 1000; //Time in milliseconds
    

    【讨论】:

    • LocalTime 是一天中的某个时间(或者在这种情况下:夜晚的某个时间)。我怀疑提问者正在处理大量时间。如果是这样,LocalTime 不适合使用。
    【解决方案3】:

    如果我了解您需要将字符串(来自编辑文本)转换为毫秒的时间。

    public static void main(String[] args) {
            String st="00:01:03";   
            LocalTime t = LocalTime.parse( st ) ;
            System.out.println(t);
            System.out.println(t.toSecondOfDay()*1000);
        }
    

    【讨论】:

    • 欢迎来到 SO。请使用upvote或accept answer而不是谢谢。
    • LocalTime 是一天中的某个时间(或者在这种情况下:夜晚的某个时间)。我怀疑提问者正在处理大量时间。如果是这样,LocalTime 不适合使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-28
    • 2020-05-24
    • 2021-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多