私は時間のない日付だけを格納するデータベースの日付フィールドを持っています。今、私は、現在の日付と日付フィールドの日数の違いをJSPページで表示しながら知りたいと思っています。表示日付差分はjsp
ので、私はあなたがこのような何か試すことができます
databaseDate(2012-11-30) - currentDate(2012-11-27) = 3 days
私は時間のない日付だけを格納するデータベースの日付フィールドを持っています。今、私は、現在の日付と日付フィールドの日数の違いをJSPページで表示しながら知りたいと思っています。表示日付差分はjsp
ので、私はあなたがこのような何か試すことができます
databaseDate(2012-11-30) - currentDate(2012-11-27) = 3 days
標準JSTLでそのようなものはありませんが。カスタムEL機能があなたの最善の策になります。 /WEB-INF/functions.tld
に次のようにあなたがそれを登録した場合
public final class Functions {
private Functions() {}
public static int daysBetween(Date before, Date after) {
// ...
}
public static int daysUntilToday(Date date) {
// ...
}
}
:
<?xml version="1.0" encoding="UTF-8" ?>
<taglib
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
version="2.1">
<tlib-version>1.0</tlib-version>
<short-name>Custom_Functions</short-name>
<uri>http://example.com/functions</uri>
<function>
<name>daysBetween</name>
<function-class>com.example.Functions</function-class>
<function-signature>boolean daysBetween(java.util.Date, java.util.Date)</function-signature>
</function>
<function>
<name>daysUntilToday</name>
<function-class>com.example.Functions</function-class>
<function-signature>boolean daysUntilToday(java.util.Date)</function-signature>
</function>
</taglib>
その後、あなたは次のようにそれを使用することができます、提供
まず、ジョブを実行し、いくつかの静的メソッドを実装しますその#{bean.date}
は全額返しますjava.util.Date
:
<%@taglib uri="http://example.com/functions" prefix="f" %>
${f:daysUntilToday(bean.date)} days
実装は自由に選択できます。
public static int daysBetween(Date before, Date after) {
return Days.daysBetween(new DateTime(before.getTime()), new DateTime(after.getTime())).getDays();
}
public static int daysUntilToday(Date date) {
return Days.daysBetween(new DateTime(date.getTime()), new DateTime()).getDays();
}
をそれとも、標準のJava APIに制限している場合は、よく知られてCalendar
定型(残念ながら、JSR-310は、Java 7にそれを作っていなかった、私たちは」にフォールバック:私は個人的にJoda Timeを好みますJavaの8のためのwait)にVEの:
public static int daysBetween(Date before, Date after) {
Calendar c1 = createCalendarWithoutTime(before);
Calendar c2 = createCalendarWithoutTime(after);
int days = 0;
for (;c1.before(c2); days++) {
c1.add(Calendar.DATE, 1);
}
return days;
}
public static int daysUntilToday(Date date) {
return daysBetween(date, new Date());
}
private static Calendar createCalendarWithoutTime(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
return calendar;
}
のように持っている必要があります: -
<html>
<head>
<script>
function dateDiff(dateform) {
date1 = new Date();
date2 = new Date();
date1temp = new Date(dateform.firstdate.value);
date1.setTime(date1temp.getTime());
date2temp = new Date(dateform.seconddate.value);
date2.setTime(date2temp.getTime());
timediff = Math.abs(date1.getTime() - date2.getTime());
days = Math.floor(timediff/(1000 * 60 * 60 * 24));
dateform.difference.value = days;
return false;
}
</script>
</head>
'diff'オブジェクトはどのくらい正確にここで役に立つのですか? – BalusC
申し訳ありませんが、それを使用するのは間違っていますか?それはちょうど私の心を打ちました。私が間違っている場合、私は正しいplz! –
間違った結果を出すことはありませんが、ここではまったく使用されていません。あなたはちょうどその中で同じ時間を設定/取得しています。単に 'diff'を省略し、' Math.abs() 'の結果を' timediff'に直接代入してください。また、OPがJSP(Javaベース)でそれを行う方法を尋ねている間、この構文はJavaScriptであることにも注意してください。 – BalusC
Calendar calendar1 = Calendar.getInstance();
Calendar calendar2 = Calendar.getInstance();
calendar1.set(2007, 01, 10);
calendar2.set(2007, 07, 01);
long milliseconds1 = calendar1.getTimeInMillis();
long milliseconds2 = calendar2.getTimeInMillis();
long diff = milliseconds2 - milliseconds1;
long diffSeconds = diff/1000;
long diffMinutes = diff/(60 * 1000);
long diffHours = diff/(60 * 60 * 1000);
long diffDays = diff/(24 * 60 * 60 * 1000);
System.out.println("\nThe Date Different Example");
System.out.println("Time in milliseconds: " + diff + " milliseconds.");
System.out.println("Time in seconds: " + diffSeconds + " seconds.");
System.out.println("Time in minutes: " + diffMinutes + " minutes.");
System.out.println("Time in hours: " + diffHours + " hours.");
System.out.println("Time in days: " + diffDays + " days.");
注、今日では11月27日、11月30日ではないのです。 – BalusC
BalusCを訂正してくれてありがとう。私の質問を変更しました – user965884