如何在java中单独显示没有日期的时间

时间:2016-06-17 05:55:22

标签: java string date time split

使用多个分隔符进行字符串分析

我可以使用多个分隔符来解析字符串吗?让我们一试吧。假设您获得一个呼叫记录,该记录包含由a分配的每个呼叫的开始时间和结束时间。开始时间和结束时间用|分隔。让我们检查一下Sample Input&输出并编写相同的代码。在String API中使用split函数

创建一个主类“Main.java”。 使用以下成员创建另一个类文件“PhoneCalls.java”, 数据类型变量名称 日期开始时间 日期结束时间

使用适当的getter和setter。

输入和输出格式: 有关格式规范,请参阅示例输入和输出。

[所有粗体文本对应输入,其余对应输出]

示例输入: 输入详细信息(开始时间1 |结束时间1,开始时间2 |结束时间2) 01:00:00 | 02:01:00,03:00:00 | 04:01:00

示例输出:

致电详情

拨打的电话次数:2

致电1:

开始时间:01:00:00

结束时间:02:01:00

致电2:

开始时间:03:00:

结束时间:04:01:00

程序:

  package java1;
  import java.io.*;
  import java.lang.*;
  import java.text.DateFormat;
  import java.text.ParseException;
  import java.text.SimpleDateFormat;
  import java.util.*;
  import java.util.regex.Matcher;
  import java.util.regex.Pattern;  
  @SuppressWarnings("unused")
  class PhoneCalls
 {
Date startTime;
Date endTime;
public Date getStartTime() {
    return startTime;
}
public void setStartTime(Date startTime) {
    this.startTime = startTime;
}
public Date getEndTime() {
    return endTime;
}
public void setEndTime(Date endTime) {
    this.endTime = endTime;
}
}
public class Main 
{
@SuppressWarnings("resource")
public static void main(String args[]) throws ParseException 
{
Scanner s=new Scanner(System.in);
System.out.println("Enter detail (start time1|end time1,start time2|end          time2)");
String str=s.nextLine();
String[] str1=str.split(",");
int a=str1.length;
System.out.println("Call Details");
System.out.println("Number of calls made : "+a);
PhoneCalls[] p=new PhoneCalls[a];
DateFormat formatter = new SimpleDateFormat("hh:mm:ss");
for(int i=0;i<a;i++)
{
    p[i]=new PhoneCalls();
    String[] str2=null;
    str2=str1[i].split("\\|");
    Date date1=null;
    date1=formatter.parse(str2[0]);
    Date date2=null;
    date2=formatter.parse(str2[1]);
    p[i].setStartTime(date1);
    p[i].setEndTime(date2);
}
for(int j=0;j<a;j++)
{
    System.out.println("Call "+(j+1)+" :");
    System.out.println("Start Time : "+p[j].startTime);
    System.out.println("End Time : "+p[j].endTime);
}
}
}


My  output:
Call Details
Number of calls made : 2
Call 1 :
Start Time : Thu Jan 01 01:00:00 IST 1970
End Time : Thu Jan 01 02:01:00 IST 1970
Call 2 :
Start Time : Thu Jan 01 03:00:00 IST 1970
End Time : Thu Jan 01 04:01:00 IST 1970

required output:
Call Details
Number of calls made : 2
Call 1 :
Start Time : 01:00:00
End Time : 02:01:00
Call 2 :
Start Time : 03:00:00
End Time : 04:01:00

1 个答案:

答案 0 :(得分:1)

正如Jon Skeet所说,你需要使用SimpleDateFormatter

您的代码应如下所示:

SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");

for(int j = 0; j < a; j++)
{
    System.out.println("Call "+(j+1)+" :");
    System.out.println("Start Time : " + sdf.format(p[j].startTime));
    System.out.println("End Time : " + sdf.format(p[j].endTime));
}

此处SimpleDateFormatter用于格式化Date对象的输出值。

完整的代码:

package nl.testing.startingpoint;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;  

class PhoneCalls
{
    Date startTime;
    Date endTime;

    public Date getStartTime() {
        return startTime;
    }
    public void setStartTime(Date startTime) {
        this.startTime = startTime;
    }
    public Date getEndTime() {
        return endTime;
    }
    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }
}

public class Main 
{
    @SuppressWarnings("resource")
    public static void main(String args[]) throws ParseException 
    {
        Scanner s = new Scanner(System.in);

        System.out.println("Enter detail (start time1|end time1,start time2|end          time2)");

        String str = s.nextLine();
        String[] str1 = str.split(",");

        int a = str1.length;

        System.out.println("Call Details");
        System.out.println("Number of calls made : "+a);

        PhoneCalls[] p = new PhoneCalls[a];

        DateFormat formatter = new SimpleDateFormat("hh:mm:ss");

        for(int i = 0; i < a; i++) {
            p[i] = new PhoneCalls();

            String[] str2 = str1[i].split("\\|");

            Date date1 = formatter.parse(str2[0]);
            Date date2 = formatter.parse(str2[1]);

            p[i].setStartTime(date1);
            p[i].setEndTime(date2);
        }

        SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");

        for(int j = 0; j < a; j++)
        {
            System.out.println("Call "+(j+1)+" :");
            System.out.println("Start Time : " + sdf.format(p[j].startTime));
            System.out.println("End Time : " + sdf.format(p[j].endTime));
        }
    }
}