Вы должны вычитать месяцы, получая текущий месяц, затем вычитая количество месяцев, которое вы хотите, и затем обновляя переменную даты следующим образом.
function fetchTime() {
var today = new Date();
today.setMonth(today.getMonth() - 1);
var dd = today.getDate();
var mm = today.getMonth() + 1;
var yyyy = today.getFullYear();
if (dd < 10) {
dd = '0' + dd;
}
if (mm < 10) {
mm = '0' + mm;
}
var today = yyyy + '-' + mm + '-' + dd;
return (today);
}
Если Вы вызовете функции непосредственно, то Ваша программа не загрузится на Win98.
То, что можно сделать, использовать LoadLibrary()
/ GetProcAddress()
получить указатель на GetFileTime()
/ SetFileTime()
. На Win98 это перестанет работать, давая Вам нулевую подсказку, на которую можно протестировать и проигнорировать. На 2000 и позже Вы получите указатель, который можно затем использовать.
Это - боль, но это - единственное решение, о котором я знаю.
Вот пример получения функции UpdateLayeredWindow, если это существует:
typedef BOOL (WINAPI* UpdateLayeredWinFunc) (HWND, HDC, POINT*, SIZE*, HDC, POINT*, COLORREF, BLENDFUNCTION*, DWORD);
UpdateLayeredWinFunc updateLayeredWindow = 0;
HMODULE user32Mod = GetModuleHandle (_T("user32.dll"));
updateLayeredWindow = (UpdateLayeredWinFunc) GetProcAddress (user32Mod, "UpdateLayeredWindow");
Я полагаю, что Вы добираетесь, сообщение об ошибке вроде "Точки входа процедуры (имя) не могло быть расположено в (dll)", подобный th один показанный:
пример http://img266.imageshack.us/img266/3762/error2pm1.png
Вы могли звонить FindFirstFile()
вместо GetFileTime()
. Я не знал бы альтернативу для SetFileTime()
,все же.