Bildergalerie: Neue Bilder Kennzeichnen

chrisfisch

Grünschnabel
Hallo zusammen,

hoffe mir kann jemand weiterhelfen. Habe bislang noch keine Lösung gefunden...

Ich habe in C# (.net) eine ms-sql Server basierte Bildergalerie geschrieben. Nun möchte ich neue Bilder die z.B. jünger als 30 Tage sind mit einem Hinweis "NEU" kennzeichnen.
In die Datenbank trage ich ebenfalls das Upload Datum ein. Habe es bislang jedoch ebenfalls nicht mit einem DateTime.Now hinbekommen.

Habt Ihr einen Tip wie ich dieses umsetzn kann?

Besten Dank!
 
Hallo.

Wenn du 2 DateTime Objekte hast, subtrahiere diese und sieh dir die TotalDays Eigenschaft des resultierenden TimeSpan Objekts an. :)

C#:
if ((DateTime.Now - uploadDate).TotalDays < 30)
{
   // Neu...
}

lg,..
 
Hallo.

Besten Dank für den Code. Aber irgendwie bekomme ich das nicht ans laufen.

Ich habe den Code eingefügt und bekomme eine Fehlermeldung...

Code:
if ((DateTime.Now - FileUploadDate).TotalDays < 30)
         {
             Label1.Text = "NEU";
         }

Habe ich evtl. noch etwas vergessen?

Vielen Dank und Viele Grüsse
 
Hi !

Ist FileUploadDate auch als DateTime Objekt instanziert ?

Wenn du das aus der Datenbank ausgelesen hast, musst du es dann warscheinlich von Hand in ein DateTime Objekt kapseln. Ich kann mir nicht vorstellen, dass ms-sql direkt ein DateTime Objekt liefert (Schande auf mein Haupt, wenn dem doch so ist, ich kenne ms-sql so gut wie nicht.)

Code:
Dim sql_datum As String
Dim dt_datum As DateTime

sql_datum = "20.07.2010"
dt_datum = DateTime.Parse(sql_datum)

MsgBox((Now - dt_datum).TotalDays())

Beim DateTime.Parse kann es noch gut sein, dass du noch Formateinstellungen oder Ländereinstellungen angeben musst, damit er das Datum auch richtig übernimmt (tt-mm-yyyy und nicht mm-tt-yyyy zum Beispiel).

Und Sorry, falls das für dich von anfang an ersichtlicht war :D
 
Hallo!

Danke für die Antworten. Aber irgendwie stehe ich auf dem Schlauch....

Hier mal der ganze Code:

Code:
protected void Page_Load(object sender, EventArgs e)
    {
        DataTable dt = new DataTable();
        String strConnString = System.Configuration.ConfigurationManager.ConnectionStrings["connString"].ConnectionString;
        string strQuery = "select * from Fotogalerie WHERE category=" + Request.QueryString["category"];
        SqlCommand cmd = new SqlCommand(strQuery);
        SqlConnection con = new SqlConnection(strConnString);
        SqlDataAdapter sda = new SqlDataAdapter();
        cmd.CommandType = CommandType.Text;
        cmd.Connection = con;
        try
        {
            con.Open();
            sda.SelectCommand = cmd;
            sda.Fill(dt);
            Fotolisting.DataSource = dt;
            Fotolisting.DataBind();
        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }
           

        finally
        {
            con.Close();
            sda.Dispose();
            con.Dispose();
        }


         if ((DateTime.Now - FileUploadDate).TotalDays < 2)
         {
             Label1.Text = "NEU";
         }

    }
 
Ähm ich nehme mal an, dass FileUploadDate der Spaltenname ist, in dem das Datum steht ?

Also du rufst deine Bilder ab und speicherst die Ergenismenge der SQL Abfrage in der Datatable dt.
Damit hast du aber noch nicht automatisch Zugriff auf die einzelnen Datenfelder. Du musst dt zeilenweise durchlaufen und dann für jede Zeile den Wert für FileUploadDate auslesen und verarbeiten:

Code:
		DateTime FileUploadDate = default(DateTime);

		foreach (datarow r in dt.rows) 
		{
			FileUploadDate = DateTime.Parse(r("FileUploadDate").toString);
			
			if ((DateTime.Now - FileUploadDate).TotalDays < 2)
			{
				Label1.Text = "NEU";
			}
		}

EDIT: Der Code ist mit einem Konverter von vb .net zu c# konvertiert worden. Ist vielleicht nicht 100% richtig.
 
Zuletzt bearbeitet:
Besten Dank für die Hilfe! Habs geschafft...

Hier noch zur Vervollständigung der C# Code:

Code:
DateTime FileUploadDate = default(DateTime);

         foreach (DataRow r in dt.Rows)
         {
             FileUploadDate = DateTime.Parse(r["FileUploadDate"].ToString());

             if ((DateTime.Now - FileUploadDate).TotalDays < 20)
             {

                 Label1.Text = "Neu";

             }
         }
 
Zurück