我怎样才能得到昨天;在Java中不使用日历,也不使用时间戳,只是日期?
我编写了一个方法,以我怎样才能得到昨天;在Java中不使用日历,也不使用时间戳,只是日期?,java,date,date-format,simpledateformat,Java,Date,Date Format,Simpledateformat,我编写了一个方法,以yyyy-MM-dd的格式获取当前日期,并希望能够创建另一个方法来获取昨天的日期,即当前日期的前一天。所有这些需要的是日期,而不是时间戳。我也不想使用日历。我通过以下方式设置了当前日期: public class DateWithNoTimestamp { private static final String CURRENT_DATE_FORMAT = "yyyy-MM-dd"; public final static String getCu
yyyy-MM-dd
的格式获取当前日期,并希望能够创建另一个方法来获取昨天的日期,即当前日期的前一天。所有这些需要的是日期,而不是时间戳。我也不想使用日历
。我通过以下方式设置了当前日期:
public class DateWithNoTimestamp
{
private static final String CURRENT_DATE_FORMAT = "yyyy-MM-dd";
public final static String getCurrentDate()
{
DateFormat dateFormat = new SimpleDateFormat(CURRENT_DATE_FORMAT);
Date date = new Date();
return dateFormat.format(date);
}
}
这可以用来获取当前日期,现在使用单独的方法
getYesertdayDate()
我遇到了问题。如何在减去一天的同时,以与使用getCurrentDate()
类似的方式设置它 您可以简单地从日期中减去1000*60*60*24
毫秒,并格式化该值:
Date yesterday = new Date(System.currentTimeMillis() - 1000L * 60L * 60L * 24L));
这是一种快速而肮脏的方式,正如评论中所指出的,当夏时制转换发生时(每年两天),这种方式可能会中断。推荐的替代方案有、或新的JDK 8 time API:
LocalDate today = LocalDate.now();
LocalDate yesterday = today.minusDays(1);
您可以为“昨天”创建日期()对象:
试试这个:
public class DateWithNoTimestamp
{
private static final String CURRENT_DATE_FORMAT = "yyyy-MM-dd";
public final static String getCurrentDate()
{
DateFormat dateFormat = new SimpleDateFormat(CURRENT_DATE_FORMAT);
Date date = new Date();
date .setTime(date.getTime()-24*60*60*1000); // Subtract 24*60*60*1000 milliseconds
return dateFormat.format(date);
}
}
请尝试此操作以获取昨天的日期:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
long yourDateMillis = System.currentTimeMillis()- (24 * 60 * 60 * 1000);
Time yourDate = new Time();
yourDate.set(yourDateMillis);
String formattedDate = yourDate.format("%d-%m-%Y");
txtViewYesterday.setText(formattedDate);}
我发现,
org.apache.commons.lang3.time.DateUtils
更直观、更易于使用
谢谢你的提问
Date date = DateUtils.addDays(new Date(), -1);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(date);
我会成功的。而且它在JDK7或更低版本中也能很好地工作。对于Java 8及更高版本,请使用类:
妈的,比我快…说得好!我没有想到:)“这是一种又快又脏的方式”你忘了加上一句,它至少在一年中的两天会中断——特别是在夏令时启用或停用的日子。“我怎么能不使用桨而坐划船过河呢?”伊杜诺,我想你可以用手划桨了吧?。。在Java中,这意味着要编写
日历的子集
。重复许多问题。搜索术语,例如:(a)仅限Java日期,(b)Java昨天或Java减去天数。具体来说,请看现代解决方案。谢谢,这和我想做的一样。机器将日期缩短到毫秒,所以这很有意义。我很感激!我建议始终将可选的ZoneId
传递给now
,而不是隐式地依赖JVM的当前默认时区。即使在运行时,该默认值也可以随时更改<代码>LocalDate.now(美国/蒙特利尔地区)
Date date = DateUtils.addDays(new Date(), -1);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(date);
LocalDate yesterday = LocalDate.now().minusDays(1L);