<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[schnitttage von zwei datums]]></title><description><![CDATA[<p>Hi habe eine Kleine Frage</p>
<p>Ich habe 2 Zeiträume mir jeweils einem von und einem bis (z.B. 1.8.12 - 1.9.12)</p>
<p>ich möchte die Überschneidungstage der zwei zeiträume haben. Es könnt aber auch sein, dass sich die Zeiträume überhaupt nicht berühren...</p>
<p>Könnt ihr mir helfen. Wieviele if-anweisungen benötige ich?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/295809/schnitttage-von-zwei-datums</link><generator>RSS for Node</generator><lastBuildDate>Sat, 15 Aug 2026 07:59:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/295809.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 22 Nov 2011 14:15:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to schnitttage von zwei datums on Tue, 22 Nov 2011 14:15:43 GMT]]></title><description><![CDATA[<p>Hi habe eine Kleine Frage</p>
<p>Ich habe 2 Zeiträume mir jeweils einem von und einem bis (z.B. 1.8.12 - 1.9.12)</p>
<p>ich möchte die Überschneidungstage der zwei zeiträume haben. Es könnt aber auch sein, dass sich die Zeiträume überhaupt nicht berühren...</p>
<p>Könnt ihr mir helfen. Wieviele if-anweisungen benötige ich?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147349</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147349</guid><dc:creator><![CDATA[user789954411]]></dc:creator><pubDate>Tue, 22 Nov 2011 14:15:43 GMT</pubDate></item><item><title><![CDATA[Reply to schnitttage von zwei datums on Tue, 22 Nov 2011 14:22:05 GMT]]></title><description><![CDATA[<p>Falls du die Möglichkeit hast die boost library zu benutzen, rate ich dir folgenden Link genauer anzuschauen.<br />
<a href="http://www.boost.org/doc/libs/1_44_0/doc/html/date_time/posix_time.html#date_time.posix_time.time_period" rel="nofollow">http://www.boost.org/doc/libs/1_44_0/doc/html/date_time/posix_time.html#date_time.posix_time.time_period</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147350</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147350</guid><dc:creator><![CDATA[time_period]]></dc:creator><pubDate>Tue, 22 Nov 2011 14:22:05 GMT</pubDate></item><item><title><![CDATA[Reply to schnitttage von zwei datums on Tue, 22 Nov 2011 14:23:27 GMT]]></title><description><![CDATA[<p>user789954411 schrieb:</p>
<blockquote>
<p>Hi habe eine Kleine Frage</p>
<p>Ich habe 2 Zeiträume mir jeweils einem von und einem bis (z.B. 1.8.12 - 1.9.12)</p>
<p>ich möchte die Überschneidungstage der zwei zeiträume haben. Es könnt aber auch sein, dass sich die Zeiträume überhaupt nicht berühren...</p>
<p>Könnt ihr mir helfen. Wieviele if-anweisungen benötige ich?</p>
</blockquote>
<p>Eine oder drei oder sechs, würde ich sagen.</p>
<p>Das ganze wäre natürlich einfacher, wenn ein Datum nicht als &quot;1.8.12&quot;, sondern als &quot;4017 Tage nach dem 31.12.-1&quot; vorlägen.</p>
<p>Vielleicht inspiriert Dich das da:<br />
<a href="http://www.c-plusplus.net/forum/294811" rel="nofollow">http://www.c-plusplus.net/forum/294811</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147351</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147351</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 22 Nov 2011 14:23:27 GMT</pubDate></item><item><title><![CDATA[Reply to schnitttage von zwei datums on Tue, 22 Nov 2011 14:31:36 GMT]]></title><description><![CDATA[<p>danke für die Antwort...</p>
<p>Ich muss auch wissen, wie sie sich überschneiden. Das Resultat muss ein von und ein bis sein (z.B zeitraum 1: 24.8.12 - 01.09.12 zeitraum2: 24.8.12 - 31.8.12 ergebnis von= 24.8.12 bis=31.8.12)</p>
<p>kannst du mir bezüglich den ifs bitte kurz helfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147354</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147354</guid><dc:creator><![CDATA[user789954411]]></dc:creator><pubDate>Tue, 22 Nov 2011 14:31:36 GMT</pubDate></item><item><title><![CDATA[Reply to schnitttage von zwei datums on Tue, 22 Nov 2011 14:36:32 GMT]]></title><description><![CDATA[<p>user789954411 schrieb:</p>
<blockquote>
<p>danke für die Antwort...</p>
<p>Ich muss auch wissen, wie sie sich überschneiden. Das Resultat muss ein von und ein bis sein (z.B zeitraum 1: 24.8.12 - 01.09.12 zeitraum2: 24.8.12 - 31.8.12 ergebnis von= 24.8.12 bis=31.8.12)</p>
</blockquote>
<p>Oh, ich dachte nur die Anzahl sei interessant.<br />
Die Grenzen finden, sogar in Datumsschreibweise, würde ich so angehen, daß ich das Grenzenproblem erstmal für zwei int-Intervalle löse.<br />
Geschätze ifs: 3 bis 6<br />
Und dann mir eine Funktion baue, die zwei Datums vergleichen kann.<br />
Geschätze ifs: 5<br />
Und dann die ints durch Datums ersetzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147355</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147355</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 22 Nov 2011 14:36:32 GMT</pubDate></item><item><title><![CDATA[Reply to schnitttage von zwei datums on Tue, 22 Nov 2011 14:40:12 GMT]]></title><description><![CDATA[<p>ok, danke</p>
<p>könntest du das kurz anhand eines beispiels zeigen, bitte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147358</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147358</guid><dc:creator><![CDATA[user789954411]]></dc:creator><pubDate>Tue, 22 Nov 2011 14:40:12 GMT</pubDate></item><item><title><![CDATA[Reply to schnitttage von zwei datums on Tue, 22 Nov 2011 14:43:59 GMT]]></title><description><![CDATA[<p>user789954411 schrieb:</p>
<blockquote>
<p>könntest du das kurz anhand eines beispiels zeigen, bitte?</p>
</blockquote>
<p>Nein, diese spannende Übungsaufgabe möchte ich Dir nicht abnehmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147362</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147362</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 22 Nov 2011 14:43:59 GMT</pubDate></item><item><title><![CDATA[Reply to schnitttage von zwei datums on Tue, 22 Nov 2011 14:46:43 GMT]]></title><description><![CDATA[<p>[quote=&quot;volkard&quot;][quote=&quot;user789954411&quot;]<br />
Die Grenzen finden, sogar in Datumsschreibweise, würde ich so angehen, daß ich das Grenzenproblem erstmal für zwei int-Intervalle löse.</p>
<p>das mit den 2 int-intervallen verstehe ich nicht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147364</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147364</guid><dc:creator><![CDATA[user789954411]]></dc:creator><pubDate>Tue, 22 Nov 2011 14:46:43 GMT</pubDate></item><item><title><![CDATA[Reply to schnitttage von zwei datums on Tue, 22 Nov 2011 14:51:06 GMT]]></title><description><![CDATA[<p>user789954411 schrieb:</p>
<blockquote>
<p>das mit den 2 int-intervallen verstehe ich nicht</p>
</blockquote>
<p>Erstmal ein Übungsprogramm machen, um besser in die Materie zu kommen.</p>
<p>Eingabe:<br />
Start des ersten Bereichs: 15<br />
Ende des ersten Bereichs: 70<br />
Start des zweiten Bereichs: 30<br />
Ende des zweiten Bereichs: 90</p>
<p>Ausgabe:<br />
Die Schnittmenge ist der Bereich von 30 bis 70.</p>
<p>Und wenn das klappt, haste schon viel bessere Karten, um das Gesamtproblem zu schaffen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147367</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147367</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 22 Nov 2011 14:51:06 GMT</pubDate></item><item><title><![CDATA[Reply to schnitttage von zwei datums on Tue, 22 Nov 2011 15:01:39 GMT]]></title><description><![CDATA[<p>Ich nehm einfach die 2 zeitspannen her ordne die 4 datums<br />
aufsteigend--&gt; die mittleren 2 sind dann mein von und mein bis.</p>
<p>dann ist das problem eh gelöst...oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147369</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147369</guid><dc:creator><![CDATA[user789954411]]></dc:creator><pubDate>Tue, 22 Nov 2011 15:01:39 GMT</pubDate></item><item><title><![CDATA[Reply to schnitttage von zwei datums on Tue, 22 Nov 2011 15:04:48 GMT]]></title><description><![CDATA[<p>user789954411 schrieb:</p>
<blockquote>
<p>Ich nehm einfach die 2 zeitspannen her ordne die 4 datums<br />
aufsteigend--&gt; die mittleren 2 sind dann mein von und mein bis.</p>
<p>dann ist das problem eh gelöst...oder?</p>
</blockquote>
<p>Zeitspanne1: 01.01.2011 - 01.02.2011<br />
Zeitspanne2: 01.03.2011 - 01.04.2011</p>
<p>Ergebnis: 01.02.2011 - 01.03.2011</p>
<p>Somit funtkioniert es nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147370</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147370</guid><dc:creator><![CDATA[DoesntWork]]></dc:creator><pubDate>Tue, 22 Nov 2011 15:04:48 GMT</pubDate></item><item><title><![CDATA[Reply to schnitttage von zwei datums on Tue, 22 Nov 2011 15:11:33 GMT]]></title><description><![CDATA[<p>Du kannst die von time_period vorgeschlagenen boost-Funktionen (bool contains(time_period)) nutzen oder das selber machen. Am einfachsten wäre wahrscheinlich Folgendes (mit einer if-Abfrage):</p>
<pre><code class="language-cpp">...
struct Period
{
    time_t d1;  //Datum als Sekunden/Min/Tage/etc. ab einem bestimmten Zeitpunkt
    time_t d2;
} p1, p2; 

...

Period intersect_days (const Period&amp; p1, const Period&amp; p1)
{
    Period intersect_per;
    if (p1.d2 &lt; p2.d1 || p1.d2 &gt; p2.d1)  //no intersection
    {
        intersect_per.d1 = 0;
        intersect_per.d2 = 0;
    }

    intersect_per.d1 = max(p1.d1, p2.d1);
    intersect_per.d2 = min(p1.d2, p2.d2);

    return intersect_per;
}
</code></pre>
<p>Anschließend beide time_t in ein Datumformat umwandeln. Wenn die Tage indetisch sind, dann musst du entscheiden, was du machen willst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147371</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147371</guid><dc:creator><![CDATA[*Rewind*]]></dc:creator><pubDate>Tue, 22 Nov 2011 15:11:33 GMT</pubDate></item><item><title><![CDATA[Reply to schnitttage von zwei datums on Tue, 22 Nov 2011 15:15:36 GMT]]></title><description><![CDATA[<p>[Rewind] schrieb:</p>
<blockquote>
<p>Du kannst die von time_period vorgeschlagenen boost-Funktionen (bool contains(time_period)) nutzen oder das selber machen. Am einfachsten wäre wahrscheinlich Folgendes (mit einer if-Abfrage):</p>
<pre><code class="language-cpp">...
struct Period
{
    time_t d1;  //Datum als Sekunden/Min/Tage/etc. ab einem bestimmten Zeitpunkt
    time_t d2;
} p1, p2; 

...

Period intersect_days (const Period&amp; p1, const Period&amp; p1)
{
    Period intersect_per;
    if (p1.d2 &lt; p2.d1 || p1.d2 &gt; p2.d1)  //no intersection
    {
        intersect_per.d1 = 0;
        intersect_per.d2 = 0;
    }

    intersect_per.d1 = max(p1.d1, p2.d1);
    intersect_per.d2 = min(p1.d2, p2.d2);

    return intersect_per;
}
</code></pre>
<p>Anschließend beide time_t in ein Datumformat umwandeln. Wenn die Tage indetisch sind, dann musst du entscheiden, was du machen willst.</p>
</blockquote>
<p>Diese Richtung würde ich nicht verfolgen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147373</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147373</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 22 Nov 2011 15:15:36 GMT</pubDate></item><item><title><![CDATA[Reply to schnitttage von zwei datums on Tue, 22 Nov 2011 15:17:07 GMT]]></title><description><![CDATA[<p>Warum denn nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147375</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147375</guid><dc:creator><![CDATA[*Rewind*]]></dc:creator><pubDate>Tue, 22 Nov 2011 15:17:07 GMT</pubDate></item><item><title><![CDATA[Reply to schnitttage von zwei datums on Tue, 22 Nov 2011 15:25:23 GMT]]></title><description><![CDATA[<p>Du baus die Klasse nur zu dem Zweck, zwei(!) Zeilen in eine Funktion auszulagern. Macht aber in der Funktion Unfug, das if da gehört da gar nicht hin.<br />
Und es ist nicht nötig, nach time_t und zurück zu wandeln, weil die Anzahl der dazwischenliegenden Tage nicht gebraucht wird. Die durch dieses if festgestelle Information müßte dann in der main() wieder extrahiert werden.</p>
<p>Dann schlägst Du globale Variablen vor.</p>
<p>Das Programm bleibt hingegen winzig, wenn man es in der main läßt. Das wäre jetzt angemessener, da user789954411 anscheinend Anfänger ist. Die Aufgabe ist so schon schwer genug. Ihm jetzt noch ein wenog OOP reinzudrücken, ergibt für mich keinen Sinn. Allenfalls eine struct Datum{int tag;int monat;int jahr;}, die würde sich viel eher anbieten. Aber erstmal geht es auch mit viermal 3 ints.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147378</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147378</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 22 Nov 2011 15:25:23 GMT</pubDate></item><item><title><![CDATA[Reply to schnitttage von zwei datums on Tue, 22 Nov 2011 15:51:36 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Du baus die Klasse nur zu dem Zweck, zwei(!) Zeilen in eine Funktion auszulagern. Macht aber in der Funktion Unfug, das if da gehört da gar nicht hin.</p>
</blockquote>
<p>Sei bitte nicht immer so abwertend. Ich habe die Struktur erstellt, um die Daten semantisch zu gruppieren. Ist das so schlimm?</p>
<p>volkard schrieb:</p>
<blockquote>
<p>Und es ist nicht nötig, nach time_t und zurück zu wandeln, weil die Anzahl der dazwischenliegenden Tage nicht gebraucht wird. Die durch dieses if festgestelle Information müßte dann in der main() wieder extrahiert werden.</p>
</blockquote>
<p>Damit ist die Option gegeben, das zu machen. Was auch nur eine Idee.</p>
<p>volkard schrieb:</p>
<blockquote>
<p>Dann schlägst Du globale Variablen vor.</p>
</blockquote>
<p>Tu ich nicht. Ich habe absichtlich vor und nach dem struct &quot;...&quot; geschrieben und hätte es global gar nicht deklariert. Ich habe nur die main() nicht geschrieben.</p>
<p>volkard schrieb:</p>
<blockquote>
<p>Das Programm bleibt hingegen winzig, wenn man es in der main läßt. Das wäre jetzt angemessener, da user789954411 anscheinend Anfänger ist.</p>
</blockquote>
<p>Worauf willst du hinaus? Dass er so ein Anfänger ist, dass er Funktionen nicht kennt? Wenn der Code wächst, finde ich es schöner, so etwas als Funktion zu haben.</p>
<p>volkard schrieb:</p>
<blockquote>
<p>Die Aufgabe ist so schon schwer genug. Ihm jetzt noch ein wenog OOP reinzudrücken, ergibt für mich keinen Sinn. Allenfalls eine struct Datum{int tag;int monat;int jahr;}, die würde sich viel eher anbieten. Aber erstmal geht es auch mit viermal 3 ints.</p>
</blockquote>
<p>Was OOP angeht, musst du zugeben, dass es auf das Minimum reduziert ist. Das kann man weglassen, sehe aber keinen Grund dafür, weil die Wertrückgabe übersichtlicher ist. Der struct-Overhead ist in dem Fall vernachlässigbar, wenn man das als Funktion haben möchte (ich wollte es in dem Fall).</p>
<p>Mein Gott, bist du immer so oder sehen das Andere auch so? Das war doch eine Idee und dafür werde ich gleich öffentlich hingerichtet. Wirklich sehr nett.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147387</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147387</guid><dc:creator><![CDATA[*Rewind*]]></dc:creator><pubDate>Tue, 22 Nov 2011 15:51:36 GMT</pubDate></item><item><title><![CDATA[Reply to schnitttage von zwei datums on Tue, 22 Nov 2011 16:05:29 GMT]]></title><description><![CDATA[<p>Ich werde Dich nicht mit Worthülsen wie &quot;Im Prinzip richtig, aber...&quot; oder &quot;Eine sehr schöne Lösung, leider für eine andere Aufgabe...&quot; versorgen. Wenn ich es für ungut halte, sage ich das einfach.</p>
<p>[Rewind] schrieb:</p>
<blockquote>
<p>Das war doch eine Idee und dafür werde ich gleich öffentlich hingerichtet. Wirklich sehr nett.</p>
</blockquote>
<p>Du hattest mit</p>
<p>[Rewind] schrieb:</p>
<blockquote>
<p>Warum denn nicht?</p>
</blockquote>
<p>doch nachgefragt, warum ich Deinen Ansatz für ungut halte. Ich wäre sonst nicht weiter drauf eingegangen. Da Du meine Argumente nicht verstehst und auch nicht hören willst, verzichte ich darauf, auf Deine weiter einzugehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147401</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147401</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 22 Nov 2011 16:05:29 GMT</pubDate></item></channel></rss>