То, что я делаю, имеют статический класс со следующим кодом в моем проекте:
#region Dataset -> Immediate Window
public static void printTbl(DataSet myDataset)
{
printTbl(myDataset.Tables[0]);
}
public static void printTbl(DataTable mytable)
{
for (int i = 0; i < mytable.Columns.Count; i++)
{
Debug.Write(mytable.Columns[i].ToString() + " | ");
}
Debug.Write(Environment.NewLine + "=======" + Environment.NewLine);
for (int rrr = 0; rrr < mytable.Rows.Count; rrr++)
{
for (int ccc = 0; ccc < mytable.Columns.Count; ccc++)
{
Debug.Write(mytable.Rows[rrr][ccc] + " | ");
}
Debug.Write(Environment.NewLine);
}
}
public static void ResponsePrintTbl(DataTable mytable)
{
for (int i = 0; i < mytable.Columns.Count; i++)
{
HttpContext.Current.Response.Write(mytable.Columns[i].ToString() + " | ");
}
HttpContext.Current.Response.Write("<BR>" + "=======" + "<BR>");
for (int rrr = 0; rrr < mytable.Rows.Count; rrr++)
{
for (int ccc = 0; ccc < mytable.Columns.Count; ccc++)
{
HttpContext.Current.Response.Write(mytable.Rows[rrr][ccc] + " | ");
}
HttpContext.Current.Response.Write("<BR>");
}
}
public static void printTblRow(DataSet myDataset, int RowNum)
{
printTblRow(myDataset.Tables[0], RowNum);
}
public static void printTblRow(DataTable mytable, int RowNum)
{
for (int ccc = 0; ccc < mytable.Columns.Count; ccc++)
{
Debug.Write(mytable.Columns[ccc].ToString() + " : ");
Debug.Write(mytable.Rows[RowNum][ccc]);
Debug.Write(Environment.NewLine);
}
}
#endregion
я затем я вызову одну из вышеупомянутых функций в непосредственном окне, и результаты появятся там также. Например, если я захочу видеть содержание переменной 'myDataset', то я назову printTbl (myDataset). После удара входят, результаты будут распечатаны к непосредственному окну
<script language="JavaScript">
<!--
function dstrToUTC(ds) {
var dsarr = ds.split("/");
var mm = parseInt(dsarr[0],10);
var dd = parseInt(dsarr[1],10);
var yy = parseInt(dsarr[2],10);
return Date.UTC(yy,mm-1,dd,0,0,0);
}
function datediff(ds1,ds2) {
var d1 = dstrToUTC(ds1);
var d2 = dstrToUTC(ds2);
var oneday = 86400000;
return (d2-d1) / oneday;
}
// test cases are below
var a; var b;
a = "01/09/1999";
b = "01/10/1999";
document.write("From "+a+" to "+b+" is "+datediff(a,b)+" day(s)<br>");
a = "01/12/1999";
b = "01/19/1999";
document.write("From "+a+" to "+b+" is "+datediff(a,b)+" day(s)<br>");
a = "01/19/1999";
b = "01/12/1999";
document.write("From "+a+" to "+b+" is "+datediff(a,b)+" day(s)<br>");
a = "01/03/1999";
b = "01/13/1999";
document.write("From "+a+" to "+b+" is "+datediff(a,b)+" day(s)<br>");
a = "04/30/1999";
b = "05/01/1999";
document.write("From "+a+" to "+b+" is "+datediff(a,b)+" day(s)<br>");
a = "05/30/1999";
b = "06/01/1999";
document.write("From "+a+" to "+b+" is "+datediff(a,b)+" day(s)<br>");
a = "02/28/1999";
b = "03/01/1999";
document.write("From "+a+" to "+b+" is "+datediff(a,b)+" day(s)<br>");
a = "02/28/2000";
b = "03/01/2000";
document.write("From "+a+" to "+b+" is "+datediff(a,b)+" day(s)<br>");
a = "01/01/1999";
b = "12/31/1999";
document.write("From "+a+" to "+b+" is "+datediff(a,b)+" day(s)<br>");
a = "01/01/2000";
b = "12/31/2000";
document.write("From "+a+" to "+b+" is "+datediff(a,b)+" day(s)<br>");
a = "12/15/1999";
b = "01/15/2001";
document.write("From "+a+" to "+b+" is "+datediff(a,b)+" day(s)<br>");
// -->
</script>
date2 = 09.02.2009 не считается датой. это работает так. Сначала он делит 02/09, возвращает 0,2222222222222222 и делится на 2009 год (0,2222222222222222 / 2009). наконец, вы получили результат date2 = 0,0001106133510314695. таким же образом вычисляется результат для даты 1.
это недопустимая операция. Если вы хотите определить дату. убедитесь, что вы поместили данные в правильный формат даты.
используйте либо new Date (), либо Date.parse ("02/09/2009")
Edit:
new Date(Date.parse("03/12/2009")-Date.parse("02/09/2009")).toLocaleDateString() Or
new Date(date1- date2).toLocaleDateString()
разве это не работает ..? ?
Edit:
может быть это сработает .. вы можете попробовать это ..
Date.parse("03/12/2009")-Date.parse("02/09/2009") / (24*60*60*1000)
и он возвращает 31 день
кажется работает для меня .. но в моем часовом поясе это заняло 03/12 / 2009 как 3-й месяц 11-й день и год 2009
(24 * 60 * 60 * 1000) = Количество миллисекунд в день
getDate
- это метод Date
объект. поскольку в любой документации четко указано, что он возвращает день месяца в диапазоне от 0 до 31. Нет смысла пытаться вычесть одно из другого, если это не тот же месяц.
diff.setTime(Math.abs(date1.getTime() - date2.getTime()));
timediff = diff.getTime();
weeks = Math.floor(timediff / (1000 * 60 * 60 * 24 * 7));
timediff -= weeks * (1000 * 60 * 60 * 24 * 7);
days = Math.floor(timediff / (1000 * 60 * 60 * 24));
timediff -= days * (1000 * 60 * 60 * 24);
hours = Math.floor(timediff / (1000 * 60 * 60));
timediff -= hours * (1000 * 60 * 60);
mins = Math.floor(timediff / (1000 * 60));
timediff -= mins * (1000 * 60);
secs = Math.floor(timediff / 1000);
timediff -= secs * 1000;
alert(weeks + " weeks, " + days + " days, " + hours + " hours, " + mins + " minutes, and " + secs + " seconds");
Вы должны явно определить объекты даты с помощью следующего. Месяцы отсчитываются от 0, поэтому 0 = январь, 1 = февраль ...
var date2 = new Date (2009, 1, 9);
Это числа, а не строка. Если вы хотите использовать строку для даты, вам нужен именно этот формат, ничего не является обязательным:
var newDate = new Date ("месяц день, год часы: минуты: секунды"); var date2 = new Date ("9 февраля 2009 г. 00:00:00");
[Изменить] Полное решение, если даты в формате мм / дд / гггг, а разница должна быть в днях:
<script type="text/javascript">
function daysFromString(dateString)
{
// split strings at / and return array
var splittedString = dateString.split("/");
// make a new date. Caveat: Months are 0-based in JS
var newDate = new Date(parseInt(splittedString[2], 10), parseInt(splittedString[0], 10)-1, parseInt(splittedString[1], 10));
// returns days since jan 1 1970
return Math.round(newDate.getTime() / (24*3600*1000));
}
var dateString2 = "02/09/2009";
var dateString1= "03/12/2009";
var dateDays1 = daysFromString(dateString1);
var dateDays2 = daysFromString(dateString2);
var diff = dateDays1 - dateDays2;
alert (diff);
</script>
Здесь объясняется, как найти разницу между двумя датами в javascript
да. Вы должны использовать объект Date , например этот
var d = new Date(2009,9,19); //19th october, months are 0-based
var d2 = new Date(2009,10,12);
var diff = (d2 - d)/60000; //diff in minutes
alert(diff / 24); //difference in hours
<script type="text/javascript">
function GetD()
{
var date1 = new Date ( 2009 , 09 , 02 );
var date2 = new Date ( 2009 , 12 , 03 );
var diff = days_between (date1,date2);
alert ( diff );
}
function days_between(date1, date2) {
// The number of milliseconds in one day
var ONE_DAY = 1000 * 60 * 60 * 24;
// Convert both dates to milliseconds
var date1_ms = date1.getTime();
var date2_ms = date2.getTime();
// Calculate the difference in milliseconds
var difference_ms = Math.abs(date1_ms - date2_ms);
// Convert back to days and return
return Math.round(difference_ms/ONE_DAY);
}
</script>
Попробуйте
var diff2 = Date.parse("03/12/2009") - Date.parse("02/09/2009");
Это даст вам разницу между датами в миллисекундах. Разделите это число на 86 400 000, и разница будет в днях.