---
title: "Jämföra datum"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/94681-jämföra-datum"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "Rossifumi"
published: "2004-01-13T10:23:42.000Z"
updated: "2004-01-13T11:04:02.000Z"
replies: 9
views: 619
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/94681-jämföra-datum"
---

# Jämföra datum

## #1 — Rossifumi, 2004-01-13T10:23Z

Jag har ett datum i en databas som jag vill jämföra med dagens datum. Har hittat den [här sidan](http://www.superdotnet.com/Article.aspx?ArticleID=79) där dom går igenom lite hur man kan göra.

Men nu till min fråga. Hur kommer jag i min repeater åt datumet ur databasen?
När jag bara vill skriva ut det så skriver jag ju  \<%# DataBinder.Eval(Container.DataItem, "threadDateTime") %\>, försöker jag skriva t.ex   System.DateTime date2 = DataBinder.Eval(Container.DataItem, "threadDateTime"); så knasar det ut rejält.

Hjälp  :l

Permalänk: https://www.webforum.nu/p/94681

## #2 — icaaq, 2004-01-13T10:37Z

OT: fan va kul att se dig här igen Rossi :D

Nu till frågan. Visa lite av din reapeter-kod:

Mv icaaq

Permalänk: https://www.webforum.nu/p/1248320

## #3 — cyprys, 2004-01-13T10:41Z

Du kan skapa en funktion och anropa den med datumet som argument, och då göra vad du vill med den.

```
<%# functionToEvalDate(container.dataitem("threadDateTime"))%>
```

Permalänk: https://www.webforum.nu/p/1248322

## #4 — Rossifumi, 2004-01-13T10:42Z

Kul att vara här igen ;)
Vill du ha koden ur code-behind eller ur dokumentet?

Permalänk: https://www.webforum.nu/p/1248323

## #5 — icaaq, 2004-01-13T10:45Z

Antingen gör du som cyprys visar. men jag brukar kör en onitemdatabound på repetern för att i cb-filen sköta alla bindningar.

vill du se hur jag brukar göra kan du posta båda koderna.

mv icaaq

Permalänk: https://www.webforum.nu/p/1248324

## #6 — Rossifumi, 2004-01-13T10:45Z

> **cyprys skrev:**
>
> Du kan skapa en funktion och anropa den med datumet som argument, och då göra vad du vill med den.
>
> ```
> <%# functionToEvalDate(container.dataitem("threadDateTime"))%>
> ```

Skriver:

```
<%
System.DateTime date1 = System.DateTime.Now;
[b]System.DateTime date2 = functionToEvalDate(Container.DataItem("threadDateTime"));[/b]
%>
```

Får då följande felmeddelande på den feta raden:

```
Compiler Error Message: CS0246: The type or namespace name 'Container' could not be found (are you missing a using directive or an assembly reference?)
```

Permalänk: https://www.webforum.nu/p/1248325

## #7 — Rossifumi, 2004-01-13T10:49Z

> **icaaq skrev:**
>
> Antingen gör du som cyprys visar. men jag brukar kör en onitemdatabound på repetern för att i cb-filen sköta alla bindningar.
> 
> vill du se hur jag brukar göra kan du posta båda koderna.
> 
> mv icaaq

Snodde kod rätt av ifrån en annan tråd :OO

```
private void Page_Load(object sender, System.EventArgs e)
		{
			if(!IsPostBack)
			{
				BindData();
			}

		}

		public void BindData()
		{
			myRep.DataSource = GetData();
			myRep.DataBind();
		}

		public DataTable GetData() 
		{
			DataSet ds = new DataSet();
			string connS = "Provider=Microsoft.Jet.OleDB.4.0;" + "Data Source = " + Server.MapPath("/data/db/forum.mdb");
			string mySQL = "SELECT users.userName, users.userSig,users.userID, threads.threadID, threads.threadDateTime, threads.threadName, threads.threadText FROM threads INNER JOIN users ON threads.threadAuthor = users.userID ORDER BY threads.threadDateTime";
			OleDbConnection conn = new OleDbConnection(connS);
			OleDbDataAdapter adapter = new OleDbDataAdapter();
			adapter.SelectCommand = new OleDbCommand(mySQL, conn);
			adapter.Fill(ds);
			return ds.Tables[0];
		}
```

Permalänk: https://www.webforum.nu/p/1248329

## #8 — NETwork, 2004-01-13T10:52Z

DataBinder.Eval(Container.DataItem, "threadDateTime") är ett "object" och kan inte jämfölras med ett datum om du inte först typkonverterar det till ett datum annars går det att göra jämförelsen på det sättet (poseudokod):

```
<%# (DateTime.Now.ToShortDateString() == ([b](DateTime)[/b]DataBinder.Eval(Container.DataItem, "threadDateTime")).ToShortDateString()) %>

//Exempel på användning:
<asp:label visible="<%# (a==b) %>" runat="server">
```

Men det är bättre att göra detta från koden, exempelvis lägg en label i din repeater och gör nåt sånt här (sen får du naturligtvis modifiera koden och använda rätt kontroll beroende på vad du ska använda jämförelsen till):

```
private void R_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e) {
  if(e.Item.ItemType == ListItemType.Item)
    ((Label)e.Item.FindControl("myL")).Text = (DateTime.Now == value);
}
```

Permalänk: https://www.webforum.nu/p/1248330

## #9 — icaaq, 2004-01-13T10:55Z

i .aspx

```
[red]
<asp:repeater runat='server' id='myRep' onitemdatabound='dateRep_Bound'>
											<itemtemplate>
												<asp:label runat='server' id='lblDate'/>
											</itemtemplate>
										</asp:repeater>
[/red]
```

i .cs

```
[red]
		public void dateRep_Bound(object sender, RepeaterItemEventArgs e)
		{
			switch(e.Item.ItemType)
			{
				case ListItemType.Item:
				case ListItemType.AlternatingItem:

					//Hitta controllen för lbldate
					Control _ctrlDate = e.Item.FindControl("lblDate");
					if(_ctrlDate != null)
					{
						Label _date = (Label)_ctrlDate;
						_date.Text = e.Item.DataItem("threadDateTime");						
					}
				
					break;
			}
		}
[/red]
```

Kanske det skulle kunna se ut?

mv icaaq

Permalänk: https://www.webforum.nu/p/1248331

## #10 — Rossifumi, 2004-01-13T11:04Z

Tackar för alla svar... Skall klura lite nu och återkommer när jag testat.

Permalänk: https://www.webforum.nu/p/1248334

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/94681-jämföra-datum
