您的位置:首页 > 编程语言 > Java开发

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

2016-06-27 11:29 746 查看
在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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  time 数据 arduino