Java中时分秒毫秒格式(xx:xx:xx.xxx)加一个txt读出的整数值 转换为时间格式 并存入txt

在arduino中读出了一串距离第一个取值时间的值(毫秒),如图(左),保存到了txt中,并知道第一个取值时间是10:01:04.079,想要把txt中的毫秒值转换为具体时间。


代码如下:

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.*;
import java.util.Scanner;
 /*java从文本文件中一次读入一行数据进行处理 */
 /*从txt中读出毫秒数 ,再加上一个输入的初始值(初始时刻xx:xx:xx.xxx),转换为毫秒值,然后将相加后的毫秒值转化为格式xx:xx:xx.xxx,并存到txt中*/

public class TimeDate{

  	public static String secToTime(int time) {//把毫秒转换为xx:xx:xx.xxx时间格式
        String timeStr = null;
        int hour = 0;
        int minute = 0;
        int second = 0;
        int millisecond = 0;
        if (time <= 0)
            return "00:00:00.000";
        else {
            second = time /1000;
            minute = second / 60;
            millisecond = time % 1000;
            if (second < 60) {
              
              timeStr = "00:00:" + unitFormat(second) + "." + unitFormat2(millisecond);
            }else if (minute < 60) {
              second = second % 60;
              timeStr = "00:" + unitFormat(minute) + ":" + unitFormat(second) + "." + unitFormat2(millisecond);
            }else{//数字>=3600 000的时候
              hour = minute /60;
              minute = minute % 60;
              second = second - hour * 3600 - minute * 60;
              timeStr = unitFormat(hour) + ":" + unitFormat(minute) + ":" + unitFormat(second) + "." + unitFormat2(millisecond);
            }
        }
        return timeStr;
    }

    public static String unitFormat(int i) {//时分秒的格式转换
        String retStr = null;
        if (i >= 0 && i < 10)
            retStr = "0" + Integer.toString(i);
        else
            retStr = "" + i;
        return retStr;
    }

    public static String unitFormat2(int i) {//毫秒的格式转换
        String retStr = null;
        if (i >= 0 && i < 10)
            retStr = "00" + Integer.toString(i);
        else if (i >=10 && i < 100) {
           retStr = "0" + Integer.toString(i);
        }
        else
            retStr = "" + i;
        return retStr;
    }

    public static void main(String[] args) {

        System.out.println("请输入初始时间,格式xx:xx:xx.xxx:");
        Scanner input=new Scanner(System.in);//把new出的Scanner对象指向input变量,得到了获取键盘输入的实例.
        String s=input.next();//从命令行窗口得到用户输入的字符串赋值给s(s是一个字符串对象)
        int index1=s.indexOf(":");//查找字符串中的字符 ":" 从开始处开始查找,返回所在字符的索引
        int index2=s.indexOf(":",index1+1);//查找字符串中的字符 ":" 从第 index+1 个开始查找,返回所在字符的索引
        int index3=s.indexOf(".",index2+1);
        int hh=Integer.parseInt(s.substring(0,index1));
        int mi=Integer.parseInt(s.substring(index1+1,index2));
        int ss=Integer.parseInt(s.substring(index2+1,index3));
        int ms=Integer.parseInt(s.substring(index3+1));
        int time_ms=(hh*60*60+mi*60+ss)*1000+ms;
           
        FileInputStream fis = null;
        InputStreamReader isr = null;
        BufferedReader br = null; //用于包装InputStreamReader,提高处理性能。因为BufferedReader有缓冲的,而InputStreamReader没有。
        try {
        	   String str = "";
        	   String str1 = "";
             int ntime_ms;//初始时间+毫秒数得到的毫秒值
        	   fis = new FileInputStream("e:/javascriptTest/javaTest/sj.txt");// 创建流对象
        	   // 从文件系统中的某个文件中获取字节
        	    isr = new InputStreamReader(fis);// InputStreamReader 是字节流通向字符流的桥梁
        	    br = new BufferedReader(isr);// 从字符输入流中读取文件中的内容,封装了一个new InputStreamReader的对象
        	   while ((str = br.readLine()) != null) {
              ntime_ms = Integer.parseInt(str)+time_ms;

        	    str1 += secToTime(ntime_ms) + "\n";// 当读取的一行不为空时,把读到的str的值赋给str1
        	   }
        	   //写入文件
        	   try{
              FileWriter fw = new FileWriter("./sj2.txt");
              fw.write(str1);
              fw.flush();
              fw.close();
             }catch(IOException e){
              e.printStackTrace();
             }

        } catch (FileNotFoundException e) {
             System.out.println("找不到指定文件");
        } catch (IOException e) {
             System.out.println("读取文件失败");
        } finally {
             try {
               br.close();
               isr.close();
               fis.close();
              // 关闭的时候最好按照先后顺序关闭最后开的先关闭所以先关s,再关n,最后关m
             } catch (IOException e) {
              e.printStackTrace();
             }
        }
        }//end of main
}

结果如图(右):

       


资料补充:

Java文件操作概念:http://www.cnblogs.com/springcsc/archive/2009/12/03/1616367.html

Java文件操作大全:http://uujava0322.iteye.com/blog/1045876

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值