Java日期和时间格式
我正在尝试格式化时间,以便用户可以输入时间Java日期和时间格式,java,date,time,date-format,Java,Date,Time,Date Format,我正在尝试格式化时间,以便用户可以输入时间 b1.setStartTime(JOptionPane.showInputDialog("Enter Start time for Booking: ")); 对于上面的代码,有没有这样做的方法 我已经试着把预订课的开始时间改成时间戳 总的来说,我试图使用这个代码: DateFormat timeFormatter = DateFormat.getTimeInstance(DateFormat.SHORT, b1.getStartTime(
b1.setStartTime(JOptionPane.showInputDialog("Enter Start time for Booking: "));
对于上面的代码,有没有这样做的方法
我已经试着把预订课的开始时间改成时间戳
总的来说,我试图使用这个代码:
DateFormat timeFormatter =
DateFormat.getTimeInstance(DateFormat.SHORT, b1.getStartTime());
但我很难把我的头绕在它周围。我只想让用户输入一个短版本的时间,例如7:20 AM。然后,我可以利用这段时间与SQL数据库进行比较
对我来说,DateFormat.getTimeInstance()似乎是一种方法。如果我要使用此选项,预订课程中的startTime是否应为Date类型,以及如何设置用户输入的格式
String datetime = [code to get time string];
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss a");
Date date = (Date) sdf.parse(datetime);
以后,您可以参考SimpleDataFormat的java文档来了解如何设置格式:
首先,您应该始终检查JOptionPane的结果,以确保用户确实输入了一些内容,并且没有单击“取消”
其次,如果您知道希望用户如何输入时间,则需要(a)告诉他们如何输入时间(b)使用SimpleDataFormat解析时间
tf = new java.text.SimpleDateFormat ("h:mm a")
您可以使用它来解析时间:
Date d = tf.parse (textfield.getText ());
反过来,以以下格式输出日期/时间:
System.out.println ("Time: " + tf.fomat (date));
其他答案是正确的,但已经过时 java.time 该框架内置于Java8及更高版本中。这些类取代了旧的麻烦的日期时间类,如
java.util.date
,.Calendar
,&java.text.SimpleDateFormat
。该团队还建议迁移到java.time
要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释
大部分java.time功能都在中向后移植到Java6和Java7,并在中进一步适应Android
LocalTime
LocalTime
类表示一天中没有日期和时区的时间
定义格式化模式。这里看到的模式是12小时时钟,期望小时值为1-12
DateTimeFormatter f = DateTimeFormatter.ofPattern( "h:m a" );
使用该格式化程序进行解析
String input = "7:20 AM";
LocalTime localTime = LocalTime.parse( input , f );
当然,您还应该清理数据输入,并添加代码以捕获由于无效输入而引发的任何异常。为了简洁起见,这里省略了这样的代码
数据库
要查询数据库,如果JDBC驱动程序符合或更高版本,则可以通过setObject
/getObject
直接使用LocalTime
对象
如果没有,请使用添加到旧类中的新方法转换为旧java.sql类型。在这种情况下
…而另一个方向
LocalTime localTime = t.toLocalTime();
我认为这仍然是不对的。。。你忘了AM的符号了/PM@user1291492哦,是的。。。added it now.sdf.parse返回一个日期,无需在此处强制转换任何内容。如果执行此操作:Date d=tf.parse(textfield.getText()),则可以获得NullPointerException、IllegalArgumentException。你不应该这样做!输入必须经过清理,或者必须用try-catch块包围代码以处理异常。@Ozzy:是的,Ozzy,但我想这不是当前的主题。这是糟糕的代码。。。你不能教别人写那样的代码。它只是一个片段,展示了它是如何工作的。当然,用户必须阅读文档以了解如何使用它的条件。我假设例外情况是已知的和编码样式指南等。这不是初学者的教程,而是一个提示。我认为OP是一个初学者,这就是为什么我要说,用try-catch或者先检查输入。
LocalTime localTime = t.toLocalTime();