【问题标题】:Convert Java string to Time, NOT Date [duplicate]将Java字符串转换为时间,而不是日期[重复]
【发布时间】:2013-09-07 09:41:29
【问题描述】:

我想将变量字符串转换为时间类型变量,而不是使用 Java 的日期。字符串看起来像这样 17:40

我尝试使用下面的代码,但这个实例是日期类型变量而不是时间

String fajr_prayertime  =       prayerTimes.get(0);
DateFormat formatter = new SimpleDateFormat("HH:mm");
fajr_begins = (Date)formatter.parse(fajr_prayertime);
System.out.println(" fajr time " + fajr_begins);

但是 Netbean 抱怨我应该插入如下异常;

DateFormat formatter = new SimpleDateFormat("HH:mm");
try {
fajr_begins = (Date)formatter.parse(fajr_prayertime);
} catch (ParseException ex) {
Logger.getLogger(JavaFXApplication4.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println(" fajr time " + fajr_begins);

知道如何从上面的字符串中获取时间。

【问题讨论】:

  • 原来的String是什么格式的? ...另外,Java 没有 Time 对象,除了 java.sql.Time...
  • 什么时间? java.sql.Time?
  • 时间来自ArrayList 祈祷时间字符串 fajr_prayertime = 祈祷时间.get(0);
  • 我不知道你是什么意思 Nachok,但我得到了一个类似于 ie 15:30 的字符串,并且想将此字符串转换为时间,以便我可以比较它说如果时间 > 15:30 然后...

标签: java string date time


【解决方案1】:
java.sql.Time timeValue = new java.sql.Time(formatter.parse(fajr_prayertime).getTime());

【讨论】:

  • 我得到以下,未报告的异常parseexception,必须捕获或声明抛出,我真的要为此创建一个异常!!
  • 您必须捕获或传播异常。无需创建异常。请注意,您没有必须对异常执行任何操作,但如果您不这样做,错误的输入将被静默忽略,导致以后头疼。我建议像原始代码示例一样记录它。
【解决方案2】:

您可以考虑Joda Time 或Java 8,它有一个名为LocalTime 的类型,专门用于没有日期组件的一天中的某个时间。

Joda-Time 2.7/Java 8 中的示例代码。

LocalTime t = LocalTime.parse( "17:40" ) ;

【讨论】:

    【解决方案3】:

    你可能想看看这个例子:

    public static void main(String[] args) {
    
        String myTime = "10:30:54";
        SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
        Date date = null;
        try {
            date = sdf.parse(myTime);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        String formattedTime = sdf.format(date);
    
        System.out.println(formattedTime);
    
    }
    

    【讨论】:

      【解决方案4】:
      try {
      
          SimpleDateFormat format = new SimpleDateFormat("hh:mm a"); //if 24 hour format
          // or
          SimpleDateFormat format = new SimpleDateFormat("HH:mm"); // 12 hour format
      
          java.util.Date d1 =(java.util.Date)format.parse(your_Time);
      
          java.sql.Time ppstime = new java.sql.Time(d1.getTime());
      
      } catch(Exception e) {
      
          Log.e("Exception is ", e.toString());
      }
      

      【讨论】:

        【解决方案5】:

        您可以使用以下代码将字符串值更改为等效时间:

         String str = "08:03:10 pm";
         DateFormat formatter = new SimpleDateFormat("hh:mm:ss a");
         Date date = (Date)formatter.parse(str);
        

        希望对你有所帮助。

        【讨论】:

          【解决方案6】:
          SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:MM");
          simpleDateFormat.format(fajr_prayertime);
          

          【讨论】:

            【解决方案7】:

            试试……

             java.sql.Time.valueOf("10:30:54");
            

            【讨论】:

            • 仅供参考,在采用 JSR 310 时,java.sql.Time 类已被 java.time.LocalTime 类取代。
            【解决方案8】:

            Joda-Time 和 java.time

            Joda-Time 和 java.time(Java 8 中的新功能)都提供了一个 LocalTime 类来表示没有任何日期或时区的时间。

            示例代码,java.time 和 Joda-Time 的代码相同。

            LocalTime localTime = new LocalTime( "14:40" );
            LocalTime deadline = new LocalTime( "15:30" );
            boolean meetsDeadline = localTime.isBefore( deadline );
            


            关于java.time

            java.time 框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧 legacy 日期时间类,例如 java.util.Date、Calendar 和 SimpleDateFormat。

            要了解更多信息,请参阅Oracle Tutorial。并在 Stack Overflow 上搜索许多示例和解释。规格为JSR 310。

            Joda-Time 项目现在位于maintenance mode,建议迁移到java.time 类。

            您可以直接与您的数据库交换 java.time 对象。使用符合JDBC 4.2 或更高版本的JDBC driver。不需要字符串,不需要java.sql.* 类。 Hibernate 5 和 JPA 2.2 支持 java.time。

            从哪里获得 java.time 类?

            【讨论】:

              【解决方案9】:

              字符串到时间(使用任意时间):

              String myTime = "10:00:00"; 
              Time startingTime = new Time (myTime);
              

              字符串到时间(使用 currentTime):

              String currentTime = getCurrentTime(); 
              Time startingTime = new Time (currentTime);
              

              字符串时间:

              private String getCurrentTime() {    
                  SimpleDateFormat dateFormat = new SimpleDateFormat("kkmmss");
                  String currentTime = dateFormat.format(System.currentTimeMillis());
                  return currentTime;
              }
              

              【讨论】:

              • Time 是什么类?请提及图书馆和文档链接。
              • 当我创建时间开始时间; - Eclipse 提供导入“时间”(android.text.format) 的选项
              • 时间构造函数接收一个long,而不是一个String
              • Android 版不是标准的 java,所以你的代码不能工作。
              猜你喜欢
              • 2020-01-24
              • 2013-01-02
              • 1970-01-01
              • 2016-07-30
              • 1970-01-01
              • 2021-07-23
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多