This is topic C Algorithmus: Datumsvergleich in forum Produktions- & DJ-Technik, Hard- & Software at technoforum.de.


Um den Thread anzusehen, klicke auf diesen Link:
https://forum.technoforum.de/cgi-bin/ultimatebb.cgi?ubb=get_topic;f=6;t=004876

Geschrieben von: silicon (Usernummer # 503) an :
 
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
 
Geschrieben von: mik (Usernummer # 5095) an :
 
Das geht mit getdate():

[hand] Klick
 
Geschrieben von: nuc (Usernummer # 4824) an :
 
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?
 
Geschrieben von: silicon (Usernummer # 503) an :
 
@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
 
Geschrieben von: silicon (Usernummer # 503) an :
 
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
 
Geschrieben von: PigFace (Usernummer # 4299) an :
 
Ist doch kein Problem, übergib halt ein vierstelliges Jahr (bzw. eine vierstellige String-Repräsentation der Jahreszahl) und es ist eindeutig.

[piggy]
 
Geschrieben von: silicon (Usernummer # 503) an :
 
So, probier´s jetzt mit der Funktion strptime()...leider gibt´s dazu auch noch spärlich information [tutmirleid]

cheers,
silicon
 
Geschrieben von: silicon (Usernummer # 503) an :
 
bitte helfen, suche info´s über strptime ()... da gibt´s nur sowenig info im netz.

cheers,
silicon
 
Geschrieben von: vlan23 (Usernummer # 9572) an :
 
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 ]
 
Geschrieben von: Dj Toxic (Usernummer # 2471) an :
 
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
 
Geschrieben von: mind expander (Usernummer # 3159) an :
 
oder suche / poste mal in folgendem forum: http://www.codeguru.com/forum

ist ein stark frequentiertes forum, dort kann dir bestimmt jemand helfen.
 
Geschrieben von: silicon (Usernummer # 503) an :
 
@ 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
 
Geschrieben von: Dj Toxic (Usernummer # 2471) an :
 
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
 
Geschrieben von: silicon (Usernummer # 503) an :
 
@Toxic:

C oder C++ ? Da gibt´s gravierende Unterschiede.
 
Geschrieben von: Dj Toxic (Usernummer # 2471) an :
 
Das war zwar ein C/C++ Seminar, aber den Algorythmus haben wir in C geschrieben. Brauchst doch nen Algo in C, oder?

greetz,
toxic
 
Geschrieben von: silicon (Usernummer # 503) an :
 
@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. :-/
 
Geschrieben von: Dj Toxic (Usernummer # 2471) an :
 
Müßte mich auch erst wieder in die Matherie reinlesen.

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

greetz,
toxic
 
Geschrieben von: devnull (Usernummer # 5523) an :
 
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;
}


 
Geschrieben von: Inkubator (Usernummer # 3755) an :
 
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
 



(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