technoforum.de


Neuen Beitrag verfassen  Neue Umfrage  Antworten
Mein ProfilCenter login | register | Suche | FAQ | forum home | im
  älteres Thema   nächstes neues Thema
» technoforum.de   » Produktions- & DJ-Technik, Hard- & Software   » C Algorithmus: Datumsvergleich

   
Autor Thema: C Algorithmus: Datumsvergleich
silicon
AErodynamic
Usernummer # 503

 - verfasst      Profil von silicon   Homepage     Eine neue privateMessage schreiben       Editiere/Lösche Post   Antwort mit Zitat 
Hi,

muss hier einen Sche!ss Datumsvergleich durchführen. Habe nur die Daten Day, Month, Year als Int-Werte vorliegen und muss diese mit dem akt. Datum vergleichen.

Hab schon ewig gegooglet, aber für C findet man fast gar nix mehr. Da muss es doch irgendeinen Algorithmus für geben, ich hab kein Bock auf Ellenlange if´s und evtl. Fehler.

Wäre nett. Vielleicht hat jemand sowas irgedndwo rumliegen.

[help]

ps: ich hasse C!!!

[mad]
cheers,
silicon

Aus: Universe | Registriert: May 2000  |  IP: [logged]
mik

Usernummer # 5095

 - verfasst      Profil von mik   Homepage     Eine neue privateMessage schreiben       Editiere/Lösche Post   Antwort mit Zitat 
Das geht mit getdate():

[hand] Klick

Aus: Altendorf | Registriert: Feb 2002  |  IP: [logged]
nuc
Asra
Usernummer # 4824

 - verfasst      Profil von nuc   Homepage     Eine neue privateMessage schreiben       Editiere/Lösche Post   Antwort mit Zitat 
heh.
Für C findet man fast gar nix mehr?
=)

12.7 könnte helfen?

Ist das für 'ne Hausaufgabe, oder warum _muß_ es
unbedingt ANSI C sein?

Aus: Wellington | Registriert: Jan 2002  |  IP: [logged]
silicon
AErodynamic
Usernummer # 503

 - verfasst      Profil von silicon   Homepage     Eine neue privateMessage schreiben       Editiere/Lösche Post   Antwort mit Zitat 
@mik,

Danke für den Link. Die aktuelle Zeit habe ich schon per Sql (andere Geschichte). Mir liegen 2 Dati in folgendem Format vor

*s = 20.08.2003 / Aktuelle Zeit
datum = Eingegebenes Datum (zB. 20.03.2004)

Es soll gelten:

code:
  
wenn datum < *s
return -1;

ich navigier innerhalb von *s wiefolgt:

code:
int *p;
int month;
int *s;
int *d;

monat des eingegebenen datum
code:
p = datum + 3; (3 Stellen nach rechts, der Monat)
month = atoi (p);

monat des aktuellen datum
code:
d = s + 3 

als beispiel:
code:
if (day < atoi(f) && year < atoi(e) && month < atoi(d))
return -1;

..usw...

Ich weiss, sieht ziemlich kompliziert aus. Ist aber halt so. Wünsche mir PHP [furchtbartraurig]


@nuc:

danke, genau die seite hatte ich auch schon. aber leider muss ich gerade sozusagen meine strings bzw. int in dieses time_t-format umwandeln.


Converting a string to a time_t is harder, because of the wide variety of date and time formats which should be parsed. Some systems provide a strptime function; another popular routine is partime (widely distributed with the RCS package), but these are less likely to become standardized


cheers,
silicon

Aus: Universe | Registriert: May 2000  |  IP: [logged]
silicon
AErodynamic
Usernummer # 503

 - verfasst      Profil von silicon   Homepage     Eine neue privateMessage schreiben       Editiere/Lösche Post   Antwort mit Zitat 
ah grad noch gefunden (um meinen string in das time-format umzuwandeln)

In dieser Funktion sind führende Jahrhundertziffern erlaubt, jedoch nicht erforderlich.

Wird der folgende Aufruf ausgeführt:

struct tm thetime;

strptime( "11/22/02", "%m/%d/%y", &thetime ),dann könnte dies als 22/11/1902 oder 22/11/2002 gedeutet werden, da die Anwendung nicht weiß, um welches Jahrhundert es sich handelt.

***
ja was jetzt? geht das oder geht das nicht? shit shit shit...testen...

[badcomputer]

cheers,
silicon

Aus: Universe | Registriert: May 2000  |  IP: [logged]
PigFace
500
Usernummer # 4299

 - verfasst      Profil von PigFace     Eine neue privateMessage schreiben       Editiere/Lösche Post   Antwort mit Zitat 
Ist doch kein Problem, übergib halt ein vierstelliges Jahr (bzw. eine vierstellige String-Repräsentation der Jahreszahl) und es ist eindeutig.

[piggy]

Aus: Somewhere in the skeleton | Registriert: Nov 2001  |  IP: [logged]
silicon
AErodynamic
Usernummer # 503

 - verfasst      Profil von silicon   Homepage     Eine neue privateMessage schreiben       Editiere/Lösche Post   Antwort mit Zitat 
So, probier´s jetzt mit der Funktion strptime()...leider gibt´s dazu auch noch spärlich information [tutmirleid]

cheers,
silicon

Aus: Universe | Registriert: May 2000  |  IP: [logged]
silicon
AErodynamic
Usernummer # 503

 - verfasst      Profil von silicon   Homepage     Eine neue privateMessage schreiben       Editiere/Lösche Post   Antwort mit Zitat 
bitte helfen, suche info´s über strptime ()... da gibt´s nur sowenig info im netz.

cheers,
silicon

Aus: Universe | Registriert: May 2000  |  IP: [logged]
vlan23

Usernummer # 9572

 - verfasst      Profil von vlan23   Homepage     Eine neue privateMessage schreiben       Editiere/Lösche Post   Antwort mit Zitat 
vielleicht wurde die funktion ersetzt
weil sie zu unsicher ist wie z.B. strcpy

aus der manpage:
code:
NAME
strptime - converts a character string to a time value

SYNOPSIS
#include <time.h>

char *
strptime(const char *buf, const char *format, struct tm *tm);

DESCRIPTION
The strptime function converts the character string pointed to by
buf to values which are stored in the ``tm'' structure pointed
to by tm, using the format specified by format.

usw.

gib mal google: manpage strptime ein

[ 20.08.2003, 18:23: Beitrag editiert von: vlan23 ]

Aus: Berlin | Registriert: Jun 2003  |  IP: [logged]
down under

Usernummer # 2471

 - verfasst      Profil von down under     Eine neue privateMessage schreiben       Editiere/Lösche Post   Antwort mit Zitat 
Hey sili,

ich müßte eigentlich noch irgendwo so nen Algorythmus rumzuliegen haben. Falls ich ihn finden sollte poste ich ihn - falls noch benötigt.

greetz,
toxic

Aus: München | Registriert: Apr 2001  |  IP: [logged]
mind expander

Usernummer # 3159

 - verfasst      Profil von mind expander     Eine neue privateMessage schreiben       Editiere/Lösche Post   Antwort mit Zitat 
oder suche / poste mal in folgendem forum: http://www.codeguru.com/forum

ist ein stark frequentiertes forum, dort kann dir bestimmt jemand helfen.

Aus: Augsburg | Registriert: Jul 2001  |  IP: [logged]
silicon
AErodynamic
Usernummer # 503

 - verfasst      Profil von silicon   Homepage     Eine neue privateMessage schreiben       Editiere/Lösche Post   Antwort mit Zitat 
@ mind_expander:

thx, aber die haben nix über c. zumindest nix passendes zu strptime

@vlan23:

weiß ich, aber ich weiß nicht wie ich da auf meine variablen zugreifen soll, mit den pointern etc. bzw. mit der struct tm... deswegen such ich ein beispiel.

cheers,
silicon

Aus: Universe | Registriert: May 2000  |  IP: [logged]
down under

Usernummer # 2471

 - verfasst      Profil von down under     Eine neue privateMessage schreiben       Editiere/Lösche Post   Antwort mit Zitat 
Hmm...hatten in nem Seminar mal nen ziemlich schicken Algorythmus für Datumsvergleiche geschrieben, aber leider ist er irgendwo in den Tiefen meines Schreibtisches verschollen. Sorry...

greetz,
toxic

Aus: München | Registriert: Apr 2001  |  IP: [logged]
silicon
AErodynamic
Usernummer # 503

 - verfasst      Profil von silicon   Homepage     Eine neue privateMessage schreiben       Editiere/Lösche Post   Antwort mit Zitat 
@Toxic:

C oder C++ ? Da gibt´s gravierende Unterschiede.

Aus: Universe | Registriert: May 2000  |  IP: [logged]
down under

Usernummer # 2471

 - verfasst      Profil von down under     Eine neue privateMessage schreiben       Editiere/Lösche Post   Antwort mit Zitat 
Das war zwar ein C/C++ Seminar, aber den Algorythmus haben wir in C geschrieben. Brauchst doch nen Algo in C, oder?

greetz,
toxic

Aus: München | Registriert: Apr 2001  |  IP: [logged]
silicon
AErodynamic
Usernummer # 503

 - verfasst      Profil von silicon   Homepage     Eine neue privateMessage schreiben       Editiere/Lösche Post   Antwort mit Zitat 
@Toxic:

Naja, ich müsste wissen, wie ich das mit strptime und difftime hinbekomme, ohne das mein compiler mir irgendwelche warnings ausspuckt. hab das nicht so ganz drauf mit pointern und call-by-refernce in c. :-/

Aus: Universe | Registriert: May 2000  |  IP: [logged]
down under

Usernummer # 2471

 - verfasst      Profil von down under     Eine neue privateMessage schreiben       Editiere/Lösche Post   Antwort mit Zitat 
Müßte mich auch erst wieder in die Matherie reinlesen.

Haste schonmal bei www.fachinformatiker.de ins Forum geschaut bzw. gepostet?

greetz,
toxic

Aus: München | Registriert: Apr 2001  |  IP: [logged]
devnull

Usernummer # 5523

 - verfasst      Profil von devnull     Eine neue privateMessage schreiben       Editiere/Lösche Post   Antwort mit Zitat 
Zitat:
Ursprünglich geschrieben von: silicon:
monat des eingegebenen datum
code:
p = datum + 3; (3 Stellen nach rechts, der Monat)


hmm wenn du die zuweisung machst,
steht doch jetz "im" zeiger p "08.2003",
und das gibt nur sinnloses zeug wenn du das
mit atoi in nen integer umwandeln,
du musst die einzelnen daten slicen,
also nur die stelle 3 bis 5 "rauskopieren"
das geht mit der funktion strncpy (string.h einbinden)!
ich würde die vgl.funktion ungefähr so
schreiben (ok vllt. bissl umständlich *g*)
code:
char *s="20.08.2003";
char *datum="20.08.2003";
int check_date(char* today, char* date_to_check) {

char t_day[3]="", t_month[3]="", t_year[5]="",
check_day[3]="", check_month[3]="", check_year[5]="";
int day,month,year,c_day,c_month,c_year;

strncpy(t_day, today,2);
strncpy(t_month, today+3,2);
strncpy(t_year, today+6,4);
strncpy(check_day, date_to_check,2);
strncpy(check_month, date_to_check+3,2);
strncpy(check_year, date_to_check+6,4);
day=atoi(t_day);
month=atoi(t_month);
year=atoi(t_year);
c_day=atoi(check_day);
c_month=atoi(check_month);
c_year=atoi(check_year);
if( (day!=c_day) && (month!=c_month) && (year!=c_year) ) return -1;
return 1;
}


Aus: Dresden | Registriert: Apr 2002  |  IP: [logged]
Inkubator
Biohazard
Usernummer # 3755

 - verfasst      Profil von Inkubator   Homepage     Eine neue privateMessage schreiben       Editiere/Lösche Post   Antwort mit Zitat 
hi sili
wenn du's noch brauchst dann kannst das mal versuchen:

code:
#include "stdafx.h"
#include <string.h>
#include <stdlib.h>


char pcToday[20] = {"20.08.2003/18:03:23"};
char pcDate[11] = {"20.08.2004"};

int main(int argc, char* argv[])
{
// Declarations
char pcTodayCat[20] = {""};
char pcDateCat[20] = {""};

// first, concat today
strncpy(pcTodayCat, pcToday + 6, 4);
strncpy(pcTodayCat + 4, pcToday + 3, 2);
strncpy(pcTodayCat + 6, pcToday, 2);
strcat(pcTodayCat + 8, "\n");
printf(pcTodayCat);

// the same with date
strncpy(pcDateCat, pcDate + 6, 4);
strncpy(pcDateCat + 4, pcDate + 3, 2);
strncpy(pcDateCat + 6, pcDate, 2);
strcat(pcDateCat + 8, "\n");
printf(pcDateCat);

// if date is lower than today
if ( atoi(pcDateCat) < atoi(pcTodayCat) ) {
printf("YIHAAAAA!!!\n");
return 1;
}

printf("MUUUHHH!!!\n");
return 0;
}

einfach sinngemäss an deine bedürfnisse anpassen.

peace

Aus: zürich | Registriert: Sep 2001  |  IP: [logged]


 
Neuen Beitrag verfassen  Neue Umfrage  Antworten Schliessen   Feature Topic   MoveTopic   Lösche dieses Thema älteres Thema   nächstes neues Thema
 - Druckversion
JumpTo:

Kontakt | technoforum.de | readme


(c) 1999/2ooo/y2k(+1/+2/+3+4+5+6+7+8+9+2010+2011+2012+2013+2014+2015+2016+2017+2018+2019+2020+2021+2022+2023+2024) technoforum.de | www.techno-forum.de
Das Forum für Techno | House | Minimal | Trance | Downbeats | DnB | Grime | Elektro | IDM | Elektronika | Schranz | MNML | Ambient | Gefrickel | Dub | 2Step | Breakcore | no Business Techno | Dubstep | Big Room Techno | Grime | Complextro | Mashups | mnml | Bootlegs | Chicago House | AI Music | Acid House | Detroit Techno | Chillstep | Arenastep | IDM | Glitch | Grime | Experimental | Noise | Fidgethouse | Ableton Live 12 | Melbourne Bounce | Minimal Trap | Sinee | sounds | EDM | Splice | Bandcamp Soundcloud | Download | Progressive Electro House |
Betreiberangaben & Impressum siehe readme.txt, geschenke an: chris mayr, anglerstr. 16, 80339 münchen / fon: o89 - 5oo 29 68-drei
E-Mail: webmaster ät diesedomain
similar sites: www.elektronisches-volk.de | Ex-Omenforum | techno.de | USB | united schranz board | technoboard.at | technobase | technobase.fm | technoguide | unitedsb.de | tekknoforum.de | toxic-family.de | restrealitaet restrealität | boiler room
Diese Seite benutzt Kuhkies und du erklärst dich damit bei Betreten und Benutzung dieser Seite damit einverstanden. Es werden keinerlei Auswertungen auf Basis ebendieser vorgenommen. Nur die Foren-Software setzt Kuhkies ausschließlich für die Speicherung von Nutzerdaten für den einfacheren Logon für registrierte Nutzer, es gibt keinerlei Kuhkies für Werbung und/oder Dritte. Wir geben niemals Daten an Dritte weiter und speichern lediglich die Daten, die du uns hier als Nutzer angegeben hast sowie deine IP-Adresse, d.h. wir sind vollkommen de es fau g o-genormt, nixdestotrotz ist das sowieso eine PRIVATE Seite und nix Gewerbliches.
unitedwestream - #stayathome - #WirBleibenZuhause - corona livestream - twitch - dj stream - #savegroovemag - #blackouttuesday


Powered by Infopop Corporation
UBB.classicTM 6.5.0