Java 如何使用SimpleDataFormat只解析一天
我想按用户解析给定的日期,但要使用特定的格式:一周的日期名称 到目前为止,我所做的是:Java 如何使用SimpleDataFormat只解析一天,java,parsing,simpledateformat,Java,Parsing,Simpledateformat,我想按用户解析给定的日期,但要使用特定的格式:一周的日期名称 到目前为止,我所做的是: SimpleDateFormat format = new SimpleDateFormat("E", Locale.ENGLISH); try { Date date = format.parse ("Friday"); Calendar calendar = format.getCalendar(); calendar.add(Calendar.WEEK_OF_YEAR, 1);
SimpleDateFormat format = new SimpleDateFormat("E", Locale.ENGLISH);
try {
Date date = format.parse ("Friday");
Calendar calendar = format.getCalendar();
calendar.add(Calendar.WEEK_OF_YEAR, 1);
return calendar.getTime();
}
catch (ParseException pe) {
return null;
}
但这让我感到:
2 janv. 1970 00:00:00
我希望它能在未来的星期五还给我(在我们的timelapse中,2011年11月4日
)
我该怎么办?获取一个
日历。getInstance()
并simpyl将周中的天设置为格式的值。getCalendar()
。您需要检查一周的当前日期是否在星期五之后。在这种情况下-增加周数。获取一个日历。getInstance()
然后simpyl将周数的天设置为格式的值。getCalendar()
。您需要检查一周的当前日期是否在星期五之后。在这种情况下-增加一周。只解析一天,将其放入日历中
,这样您就可以找到一周中的哪一天,然后根据当前日期创建另一个日历,这样您就可以设置一周中的哪一天:
currentCalendar.set(Calendar.DAY_OF_WEEK,
parsedCalendar.get(Calendar.DAY_OF_WEEK));
请注意,这并不一定会把它放在未来——它会在当前一周内设置日期。因此,如果你想确保这是真的在未来,你可能想在一周后再加上:
// Assume we've already done all the parsing
int dayOfWeek = parsedCalendar.get(Calendar.DAY_OF_WEEK);
long now = System.currentTimeMillis();
Calendar currentCalendar = Calendar.getInstance();
currentCalendar.setTimeInMillis(now);
currentCalendar.set(Calendar.DAY_OF_WEEK, dayOfWeek);
if (currentCalendar.getTimeInMillis() < now) {
currentCalendar.add(Calendar.DAY_OF_MONTH, 7);
}
//假设我们已经完成了所有的解析
int dayOfWeek=parsedCalendar.get(Calendar.DAY,OF WEEK);
long now=System.currentTimeMillis();
Calendar currentCalendar=Calendar.getInstance();
currentCalendar.setTimeInMillis(现在);
currentCalendar.set(Calendar.DAY\u OF周,dayOfWeek);
if(currentCalendar.getTimeInMillis()
(如果一周中的当前日期与解析的日期相同,则应检查所需的行为…)
顺便说一句,我个人建议在Java中使用所有重要的日期和时间工作。这是一个更好的API。只解析一天,将其放入日历中,这样您就可以找到一周中的哪一天,然后根据当前日期创建另一个日历,这样您就可以设置一周中的哪一天:
currentCalendar.set(Calendar.DAY_OF_WEEK,
parsedCalendar.get(Calendar.DAY_OF_WEEK));
请注意,这并不一定会把它放在未来——它会在当前一周内设置日期。因此,如果你想确保这是真的在未来,你可能想在一周后再加上:
// Assume we've already done all the parsing
int dayOfWeek = parsedCalendar.get(Calendar.DAY_OF_WEEK);
long now = System.currentTimeMillis();
Calendar currentCalendar = Calendar.getInstance();
currentCalendar.setTimeInMillis(now);
currentCalendar.set(Calendar.DAY_OF_WEEK, dayOfWeek);
if (currentCalendar.getTimeInMillis() < now) {
currentCalendar.add(Calendar.DAY_OF_MONTH, 7);
}
//假设我们已经完成了所有的解析
int dayOfWeek=parsedCalendar.get(Calendar.DAY,OF WEEK);
long now=System.currentTimeMillis();
Calendar currentCalendar=Calendar.getInstance();
currentCalendar.setTimeInMillis(现在);
currentCalendar.set(Calendar.DAY\u OF周,dayOfWeek);
if(currentCalendar.getTimeInMillis()
(如果一周中的当前日期与解析的日期相同,则应检查所需的行为…)
顺便说一句,我个人建议在Java中使用所有重要的日期和时间工作。这是一个更好的API。它不会永远设置未来的星期五。它不会永远设置未来的星期五。如果OP想要未来的一天,那么他可以对照过去的一天检查当前的一天,如果这一天过去了,那么就在一周中添加1。@JigarJoshi:是的,这就是我的意思。我会澄清我的评论。你能举个例子说明你会如何使用JodaTime吗?我不知道我怎么能做到。谢谢:)@cx42net:在Joda时代,哪一点会给你带来麻烦LocalDate.withDayOfWeek
和LocalDate.plusWeeks
将是解析后的相关调用。。。解析本身有问题吗?它似乎与日历一起工作,那么我需要使用JodaTime吗?(我从未使用过它,这就是为什么我不知道如何继续)如果OP想要未来的一天,那么他可以对照过去的一天检查当前的一天,如果这一天过去了,那么在本周加上1。@JigarJoshi:是的,这就是我的意思。我会澄清我的评论。你能举个例子说明你会如何使用JodaTime吗?我不知道我怎么能做到。谢谢:)@cx42net:在Joda时代,哪一点会给你带来麻烦LocalDate.withDayOfWeek
和LocalDate.plusWeeks
将是解析后的相关调用。。。解析本身有问题吗?它似乎与日历一起工作,那么我需要使用JodaTime吗?(我从未使用过,这就是我不知道如何继续的原因)