Нужна программа, которая уменьшает текущую дату на 1 день

Sebasten

Хочу простую, типа берём из argv 6 параметров yyyy mm dd hh mm ss
преобразуем в секунды, уменьшаем число секунд на 86400, преобразуем в нормальный формат и печатаем в виде yyyy mm dd hh mm ss (Ну вид не очень важен, главное чтобы все эти числа встретились). Хорошо бы было, что бы всё работало в Unixе
Заранее спасибо

freezer


#include <time.h>
#include <stdio.h>

void main
{
time_t t = time(NULL);
t -= 86400;
tm* t2 = localtime(&t);
char* str = asctime(t2);
printf("Вчерась было: %s\n", str);
}

otvertka07

а переход на летнее время поддерживается?

freezer

время-то локальное... вот если бы было gmtime написано, тогда - нет

Sebasten

Спасибо!
Сука, он у меня tm не видит, ещё бы вызов который по дате время в секундах возвращал, чтобы не текущую дату, а заданную на 1 день уменьшать. Могёшь?

sergey_m

Такая программа уже есть в Unixе. Она называется date(1).

Sebasten

Я не под рутом, напиши плиз если можешь, как всё сделать чего я хочу

Sebasten

gdate -d "19700102 01:01:00" +%s -u
Thanks Vlad Borisoff

sergey_m

Что за "гэ" перед командой date?

Shurka

Ну типа продвинутая версия date (GNU расширение):)

rid2000

На тебе кросплатформенное

import java.util.Calendar;
import java.util.Date;

/**
* Created by IntelliJ IDEA.
* User: Yeldar.Nuralin
* Date: Apr 8, 2005
* Time: 9:18:23 AM
* To change this template use File | Settings | File Templates.
*/
public class Yesteday {

public static void main(String[] args) {
Calendar calendar = Calendar.getInstance;
calendar.setTimeInMillis(System.currentTimeMillis;
calendar.roll(Calendar.DAY_OF_MONTH, 1);
System.out.println("Вчера было: " + new Date(calendar.getTimeInMillis;
}
}
Оставить комментарий
Имя или ник:
Комментарий: