Java 使用向量计算日期之间的天数差
基于帖子 我如何向向量vE和vS输入随机日期,然后返回日期之间的差值?回想一下vS必须大于vE?实际上,我应该分为两种方法:一种是随机日期,另一种是计算差异Java 使用向量计算日期之间的天数差,java,date,random,vector,datediff,Java,Date,Random,Vector,Datediff,基于帖子 我如何向向量vE和vS输入随机日期,然后返回日期之间的差值?回想一下vS必须大于vE?实际上,我应该分为两种方法:一种是随机日期,另一种是计算差异 /* * Randomizacao */ package random04DiferencaDataVetor; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.ut
/*
* Randomizacao
*/
package random04DiferencaDataVetor;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
public class Random04DiferencaDataVetor {
public static void main(String[] args) throws ParseException {
final long intervalo = 1000000000;
Random rnd = new Random();
String[] vE = new String[5];
String[] vS = new String[5];
for (int i = 0; i < vE.length; i++) {
/*
* arrumar vetores para gerar datas aleatorias
* lembrando que vS deve ser maior que vE
*/
retornaData();
}
}
static void retornaData() throws ParseException {
final long intervalo = 1000000000;
Random rnd = new Random();
// formatando as datas
DateFormat formato = new SimpleDateFormat("yyyy");
Date anoE = formato.parse("2012");
long timeE = anoE.getTime();
Date anoS = formato.parse("2013");
long timeS = anoS.getTime();
// define o intervalo de datas em 1 ano
long tempoIntervalo = timeE - timeS;
// randomiza a data de entrada
long rndTempoE = timeE + (long) (rnd.nextDouble() * tempoIntervalo);
// data entrada
String dataE = new SimpleDateFormat("hh:mm dd/MM/yyyy").format(rndTempoE);
// randomiza a data de saida
long rndTempoS = rndTempoE + (long) (rnd.nextDouble() * intervalo * 2);
// data de saida
String dataS = new SimpleDateFormat("hh:mm dd/MM/yyyy").format(rndTempoS);
// formato de data
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm dd/MM/yyyy");
try {
Date dataEnt = sdf.parse(dataE);
Date dataSaida = sdf.parse(dataS);
long differenceMilliSeconds = dataSaida.getTime() - dataEnt.getTime();
long days = differenceMilliSeconds / 1000 / 60 / 60 / 24;
long hours = (differenceMilliSeconds % (1000 * 60 * 60 * 24)) / 1000 / 60 / 60;
long minutes = (differenceMilliSeconds % (1000 * 60 * 60)) / 1000 / 60;
System.out.println(days + " days, " + hours + " hours, " + minutes + " minutes.");
} catch (ParseException e) {
e.printStackTrace();
}
}
}
/*
*随机化
*/
包装随机性:差频放大器;
导入java.text.DateFormat;
导入java.text.ParseException;
导入java.text.simpleDataFormat;
导入java.util.Date;
导入java.util.Random;
公共类随机差分器{
公共静态void main(字符串[]args)引发异常{
最终长间隔=100000000;
随机rnd=新随机();
字符串[]vE=新字符串[5];
字符串[]vS=新字符串[5];
for(int i=0;i
数组
而不是向量
。您可以使用`向量声明,如下所示:
Vector<String> vE = new Vector<String>();
Vector<String> vS = new Vector<String>();
List<String> vE = new ArrayList<String>();
List<String> vS = new ArrayList<String>();
String dateString1 = "01/01/2012";
vE.add(dateString1);
for (int i = 0; i < 5; i++) {
int day = 1+ rnd.nextInt(28); //day from 1 to 28
int month = 1+rnd.nextInt(12); //day from 1 to 12
int year = 2000 +rnd.nextInt(13); //year from 2000 to 2012
String dateString = month+"/"+day+"/"year;
vE.add(dateString);
}
add
方法,如下所示:
Vector<String> vE = new Vector<String>();
Vector<String> vS = new Vector<String>();
List<String> vE = new ArrayList<String>();
List<String> vS = new ArrayList<String>();
String dateString1 = "01/01/2012";
vE.add(dateString1);
for (int i = 0; i < 5; i++) {
int day = 1+ rnd.nextInt(28); //day from 1 to 28
int month = 1+rnd.nextInt(12); //day from 1 to 12
int year = 2000 +rnd.nextInt(13); //year from 2000 to 2012
String dateString = month+"/"+day+"/"year;
vE.add(dateString);
}
vE
中添加5个日期,您可以执行以下操作:
Vector<String> vE = new Vector<String>();
Vector<String> vS = new Vector<String>();
List<String> vE = new ArrayList<String>();
List<String> vS = new ArrayList<String>();
String dateString1 = "01/01/2012";
vE.add(dateString1);
for (int i = 0; i < 5; i++) {
int day = 1+ rnd.nextInt(28); //day from 1 to 28
int month = 1+rnd.nextInt(12); //day from 1 to 12
int year = 2000 +rnd.nextInt(13); //year from 2000 to 2012
String dateString = month+"/"+day+"/"year;
vE.add(dateString);
}
retronadata()
中,您可能需要检索两个日期字符串并计算差值:
String date1 = vE.get(0);//use some index
String date2 = vE.get(1); //use some index
//compute the difference between date1 and date2
数组
而不是向量
。您可以使用`向量声明,如下所示:
Vector<String> vE = new Vector<String>();
Vector<String> vS = new Vector<String>();
List<String> vE = new ArrayList<String>();
List<String> vS = new ArrayList<String>();
String dateString1 = "01/01/2012";
vE.add(dateString1);
for (int i = 0; i < 5; i++) {
int day = 1+ rnd.nextInt(28); //day from 1 to 28
int month = 1+rnd.nextInt(12); //day from 1 to 12
int year = 2000 +rnd.nextInt(13); //year from 2000 to 2012
String dateString = month+"/"+day+"/"year;
vE.add(dateString);
}
add
方法,如下所示:
Vector<String> vE = new Vector<String>();
Vector<String> vS = new Vector<String>();
List<String> vE = new ArrayList<String>();
List<String> vS = new ArrayList<String>();
String dateString1 = "01/01/2012";
vE.add(dateString1);
for (int i = 0; i < 5; i++) {
int day = 1+ rnd.nextInt(28); //day from 1 to 28
int month = 1+rnd.nextInt(12); //day from 1 to 12
int year = 2000 +rnd.nextInt(13); //year from 2000 to 2012
String dateString = month+"/"+day+"/"year;
vE.add(dateString);
}
vE
中添加5个日期,您可以执行以下操作:
Vector<String> vE = new Vector<String>();
Vector<String> vS = new Vector<String>();
List<String> vE = new ArrayList<String>();
List<String> vS = new ArrayList<String>();
String dateString1 = "01/01/2012";
vE.add(dateString1);
for (int i = 0; i < 5; i++) {
int day = 1+ rnd.nextInt(28); //day from 1 to 28
int month = 1+rnd.nextInt(12); //day from 1 to 12
int year = 2000 +rnd.nextInt(13); //year from 2000 to 2012
String dateString = month+"/"+day+"/"year;
vE.add(dateString);
}
retronadata()
中,您可能需要检索两个日期字符串并计算差值:
String date1 = vE.get(0);//use some index
String date2 = vE.get(1); //use some index
//compute the difference between date1 and date2
如果您可以在示例程序中使用英语,我可能会尝试建议进一步的更正/改进。我无法准确理解您在这里尝试做什么…我无法准确理解您在这里尝试做什么…抱歉,但我不会使用
Vector
,因为它在Java中是一个过时的集合。我更喜欢它的替代品+1尽管答案听起来很合理。@Lion:既然你在问题标题中使用了vector
,我想你应该使用vector
。更新了答案以使用更合法的列表/ArrayList
。不过在使用模式上并没有太大区别。很抱歉,我不会使用Vector
,因为它在Java中是一个过时的集合。我更喜欢它的替代品+1尽管答案听起来很合理。@Lion:既然你在问题标题中使用了vector
,我想你应该使用vector
。更新了答案以使用更合法的列表/ArrayList
。不过,在使用模式上并没有太大差异。