Java 在日期值中减去时间
我实际上已经找到了最后三个日期,我想做的是从每个日期减去5小时45分钟。如何实施 到目前为止,我所做的代码是:Java 在日期值中减去时间,java,date,Java,Date,我实际上已经找到了最后三个日期,我想做的是从每个日期减去5小时45分钟。如何实施 到目前为止,我所做的代码是: public static List<Date> getPastThreeDays() { List<Date> pDates = new ArrayList<Date>(); for (int i = 1; i <= 3; i++) { Calendar cal = Calendar.getInstance()
public static List<Date> getPastThreeDays() {
List<Date> pDates = new ArrayList<Date>();
for (int i = 1; i <= 3; i++) {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -i);
Date date = cal.getTime();
String pastDate = sdf.format(date);
Date pstThreesDates;
try {
pstThreesDates = sdf.parse(pastDate);
pDates.add(pstThreesDates);
} catch (ParseException e) {
e.printStackTrace();
}
}
return pDates;
}
public static void main(String[] args) throws ParseException {
// for getting past three dates
System.out.println("-----Formatted Past Three Days-----");
List<Date> pastThreeDatesList = getPastThreeDays();
for (Date date : pastThreeDatesList) {
System.out.println("Orignal:" + date);
}
公共静态列表getPastThreeDays(){
列表pdate=newarraylist();
对于(int i=1;i您可以使用来自JodaTime的API DateTime,并制作如下内容:
Date date = new Date();
DateTime dateTime = new DateTime(date);
DateTime newDateTime = dateTime.minusHours(5).minusMinutes(45);
您可以使用JodaTime中的API DateTime并制作如下内容:
Date date = new Date();
DateTime dateTime = new DateTime(date);
DateTime newDateTime = dateTime.minusHours(5).minusMinutes(45);
远离依赖关系怎么样
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -i);
Calendar calLess5_45 = Calendar.getInstance();
calLess5_45.setTimeInMillis(cal.getTimeInMillis() - (1000*60*45) - (1000*60*60*5));
或注明日期:
Date initialDate = cal.getTime();
Date dateLess5_45 = new Date(initialDate.getTime() - (1000*60*45) - (1000*60*60*5));
远离依赖关系怎么样
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -i);
Calendar calLess5_45 = Calendar.getInstance();
calLess5_45.setTimeInMillis(cal.getTimeInMillis() - (1000*60*45) - (1000*60*60*5));
或注明日期:
Date initialDate = cal.getTime();
Date dateLess5_45 = new Date(initialDate.getTime() - (1000*60*45) - (1000*60*60*5));
将日期转换为毫秒,然后从中减去5小时45分钟,如下所示:
public static void main(String[] args) {
System.out.println("-----Formatted Past Three Days-----");
List<Date> pastThreeDatesList = getPastThreeDays();
for (Date date : pastThreeDatesList) {
System.out.println("Orignal:"+date);
long mDateMills= date.getTime() - ((5*3600 *1000)+ 45*60*1000); //you convert your date to millisecond then subtract 5h45min( in milliseconds from it)
String mNewDate= millsToDateFormat(mDateMills);
System.out.println("new Date:"+mNewDate);
}
}
public static String millsToDateFormat(long mills) {
Date date = new Date(mills);
DateFormat formatter = new SimpleDateFormat("HH:mm:ss");
String dateFormatted = formatter.format(date);
return dateFormatted;
}
publicstaticvoidmain(字符串[]args){
System.out.println(“----格式过去三天------”);
List pastThreeDatesList=getPastThreeDays();
for(日期:pastThreeDatesList){
System.out.println(“原始:+日期”);
long mDateMills=date.getTime()-((5*3600*1000)+45*60*1000);//将日期转换为毫秒,然后减去5h45min(毫秒)
字符串mNewDate=millsToDateFormat(mDateMills);
System.out.println(“新日期:+mNewDate”);
}
}
公共静态字符串millsToDateFormat(长mills){
日期=新日期(米尔斯);
DateFormat格式化程序=新的SimpleDateFormat(“HH:mm:ss”);
字符串dateFormatted=格式化程序。格式(日期);
返回日期格式化;
}
将日期转换为毫秒,然后从中减去5小时45分钟,如下所示:
public static void main(String[] args) {
System.out.println("-----Formatted Past Three Days-----");
List<Date> pastThreeDatesList = getPastThreeDays();
for (Date date : pastThreeDatesList) {
System.out.println("Orignal:"+date);
long mDateMills= date.getTime() - ((5*3600 *1000)+ 45*60*1000); //you convert your date to millisecond then subtract 5h45min( in milliseconds from it)
String mNewDate= millsToDateFormat(mDateMills);
System.out.println("new Date:"+mNewDate);
}
}
public static String millsToDateFormat(long mills) {
Date date = new Date(mills);
DateFormat formatter = new SimpleDateFormat("HH:mm:ss");
String dateFormatted = formatter.format(date);
return dateFormatted;
}
publicstaticvoidmain(字符串[]args){
System.out.println(“----格式过去三天------”);
List pastThreeDatesList=getPastThreeDays();
for(日期:pastThreeDatesList){
System.out.println(“原始:+日期”);
long mDateMills=date.getTime()-((5*3600*1000)+45*60*1000);//将日期转换为毫秒,然后减去5h45min(毫秒)
字符串mNewDate=millsToDateFormat(mDateMills);
System.out.println(“新日期:+mNewDate”);
}
}
公共静态字符串millsToDateFormat(长mills){
日期=新日期(米尔斯);
DateFormat格式化程序=新的SimpleDateFormat(“HH:mm:ss”);
字符串dateFormatted=格式化程序。格式(日期);
返回日期格式化;
}
java.time
麻烦的旧日期时间类现在是遗留的,被java.time类取代
时区对于确定日期和加减天数至关重要。日期和一天的长度在全球各地因区域而异
ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdtNow = ZonedDateTime.now( z );
减去一天。说明夏令时等异常情况
ZonedDateTime zdtYesterday = zdtNow.minusDays( 1 );
减去五小时四十五分钟的持续时间
Duration d = Duration.ofHours( 5 ).plusMinutes( 45 ); // or Duration.parse( "PT5H45M" ) in standard ISO 8601 string format.
ZonedDateTime zdtEarlier = zdtYesterday.minus( d ) ;
java.time
麻烦的旧日期时间类现在是遗留的,被java.time类取代
时区对于确定日期和加减天数至关重要。日期和一天的长度在全球各地因区域而异
ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdtNow = ZonedDateTime.now( z );
减去一天。说明夏令时等异常情况
ZonedDateTime zdtYesterday = zdtNow.minusDays( 1 );
减去五小时四十五分钟的持续时间
Duration d = Duration.ofHours( 5 ).plusMinutes( 45 ); // or Duration.parse( "PT5H45M" ) in standard ISO 8601 string format.
ZonedDateTime zdtEarlier = zdtYesterday.minus( d ) ;
提示:Date
只是Unix时代以来的毫秒数。您可以通过调用getTime()
获得该数字。然后您可以在5小时45分钟内减去毫秒数。然后您可以调用setTime
或使用它创建一个新的Date
。您已经在使用Calendar.add()
--缺少什么?还要注意,如果您使用Java 8的Java.time
包中的类,那么几乎所有关于日期的内容都会更容易。提示:Date
只是Unix时代以来的毫秒数。您可以通过调用getTime()来获得该数字
。然后,您可以在5小时45分钟内减去毫秒数。然后,您可以调用setTime
或使用它创建一个新的Date
。您已经在使用Calendar.add()
--缺少什么?还要注意,如果您使用Java 8的Java.time
包中的类,那么几乎所有关于日期的内容都会更容易。我猜OP是在做一本书/课程中的练习,所以JodaTime是不允许的。Java 8已经(相当多)与JodaTime相同的API,到目前为止,不再需要它,除非你坚持使用Java,它是OP,我同意,但有一行代码,每个阅读代码的人都知道他在做什么,使用日历或日期,代码将更加冗长。如果你不能使用其他依赖项,比如@Vadim应答Joda Time项目,现在在Maintenac中e模式,建议转到java.time类。我猜OP是在做一本书/课程中的练习,所以JodaTime是不允许的。java 8已经(差不多)与JodaTime相同的API,到目前为止,不再需要它,除非你坚持使用Java,它是OP,我同意,但有一行代码,每个阅读代码的人都知道他在做什么,使用日历或日期,代码将更加冗长。如果你不能使用其他依赖项,比如@Vadim应答Joda Time项目,现在在Maintenac中e模式,建议移动到java.time类。