Solved

Date as Input Parameter

Posted on 2009-04-13
9
594 Views
Last Modified: 2013-12-17
Hi,

I am struggling to filter a asp.net c# query with a unix date input parameter, I am trying to filter my query results between todays date and a date 14 days later. I think I am getting mixed up with the format of the date to input into the string as I have tried a lot of diferent options but get format string error messages back when I run the page. Here is my code I have so far, ;

        DateTime DateParameter = DateTime.Today;
        DateTime DateParameter1 = DateTime.Today.AddDays(14);
        double Parameter = Util.ConvertToUnixTimestamp(DateParameter);
        double Parameter1 = Util.ConvertToUnixTimestamp(DateParameter1);
        e.InputParameters["Date"] = Parameter.ToString();
        e.InputParameters["Date1"] = Parameter1.ToString();

I have replaced

        e.InputParameters["Date"] = Parameter.ToString();
        e.InputParameters["Date1"] = Parameter1.ToString();

with

        e.InputParameters["Date"] = "1018310400";
        e.InputParameters["Date1"] = "101952000";

which works perfectly, but when I run the first bit of code no results are displayed.


Thanks


Chris
0
Comment
Question by:chrispaton
  • 5
  • 4
9 Comments
 
LVL 32

Expert Comment

by:Daniel Wilson
ID: 24130162
What data type is e?  There appears to be something in the type conversions that is not as expected ...

Those values you hard-coded to test -- are they EXACTLY what Parameter.ToString() and parameter1.ToString() are returning?
0
 

Author Comment

by:chrispaton
ID: 24130202
This is the select parameter details;

                                                <SelectParameters>
                                                <asp:Parameter Name="Date" Type="String" />
                                                </SelectParameters>
                                                <SelectParameters>
                                                <asp:Parameter Name="Date1" Type="String" />
                                                </SelectParameters>

The values hard coded are supposed to be what the parameter and parameter1 should be returning but are not, I added the hard coded values to make sure that I was parsing something to the page and that my query was correct.
0
 
LVL 32

Expert Comment

by:Daniel Wilson
ID: 24130282
>>The values hard coded are supposed to be what the parameter and parameter1 should be returning but are not.

So  Util.ConvertToUnixTimestamp is not performing properly.

Can you post its code?
0
 

Author Comment

by:chrispaton
ID: 24130512
public class Util
{
    /// <summary>
    /// Convert a date time to unix timestamp
    /// </summary>
    /// <param name="date"></param>
    /// <returns></returns>
    public static double ConvertToUnixTimestamp(DateTime date)
    {
        DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);
        TimeSpan diff = date - origin;
        return Math.Floor(diff.TotalSeconds);
    }

    /// <summary>
    /// Convert a unix timestamp to a date time
    /// </summary>
    /// <param name="timestamp"></param>
    /// <returns></returns>
    public static DateTime ConvertFromUnixTimestamp(double timestamp)
    {
        DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);
        return origin.AddSeconds(timestamp);
    }
}


0
Threat Intelligence Starter Resources

Integrating threat intelligence can be challenging, and not all companies are ready. These resources can help you build awareness and prepare for defense.

 
LVL 32

Expert Comment

by:Daniel Wilson
ID: 24130688
What happens if you change the math.floor call to an explicit (long) cast?  And return a long?

http://andrewgunn.blogspot.com/2008/07/how-do-i-convert-unix-timestamp-into.html
0
 

Author Comment

by:chrispaton
ID: 24137247
I have changed the math.floor call to (long) and return a long as you suggested but it's still not returning anything.
Please help

0
 
LVL 32

Accepted Solution

by:
Daniel Wilson earned 500 total points
ID: 24137566
Not returning anything at all?

I've gone back to your code & put it into a quick test app -- which works.

Can you trace the app?  Are your dates being set as expected?  And the doubles called Parameter and Parameter1 -- what values do they have immediately after the call?

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;
 

namespace UnixTime

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }
 

        private void button1_Click(object sender, EventArgs e)

        {

            label1.Text = util.ConvertToUnixTimestamp(dateTimePicker1.Value).ToString();

        }
 

        private void button2_Click(object sender, EventArgs e)

        {

            label1.Text = util.ConvertToUnixTimestamp(DateTime.Today).ToString();

        }
 

        private void button3_Click(object sender, EventArgs e)

        {

            label1.Text = util.ConvertToUnixTimestamp(DateTime.Today.AddDays(14)).ToString();

        }

    }
 

    public class util

    {

        /// <summary>

        /// Convert a date time to unix timestamp

        /// </summary>

        /// <param name="date"></param>

        /// <returns></returns>

        public static double ConvertToUnixTimestamp(DateTime date)

        {

            DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);

            TimeSpan diff = date - origin;

            return Math.Floor(diff.TotalSeconds);

        }
 

        /// <summary>

        /// Convert a unix timestamp to a date time

        /// </summary>

        /// <param name="timestamp"></param>

        /// <returns></returns>

        public static DateTime ConvertFromUnixTimestamp(double timestamp)

        {

            DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);

            return origin.AddSeconds(timestamp);

        }

    }
 

}

Open in new window

0
 

Author Comment

by:chrispaton
ID: 24138543
hi daniel,  
thanks for your help.this was the code we used without the doubles and it works.
e.InputParameters["Date"] = Util.ConvertToUnixTimestamp(DateTime.Today).ToString();
e.InputParameters["Date1"] = Util.ConvertToUnixTimestamp(DateTime.Today.AddDays(21)).ToString();
much appreciated
chris

0
 

Author Closing Comment

by:chrispaton
ID: 31569509
hi daniel.
thanks for your help.
this was the code without the doubles and it works
e.InputParameters["Date"] = Util.ConvertToUnixTimestamp(DateTime.Today).ToString();
        e.InputParameters["Date1"] = Util.ConvertToUnixTimestamp(DateTime.Today.AddDays(21)).ToString();
much appreciated
chris
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Problem Hi all,    While many today have fast Internet connection, there are many still who do not, or are connecting through devices with a slower connect, so light web pages and fast load times are still popular.    If your ASP.NET page …
International Data Corporation (IDC) prognosticates that before the current the year gets over disbursing on IT framework products to be sent in cloud environs will be $37.1B.
Here's a very brief overview of the methods PRTG Network Monitor (https://www.paessler.com/prtg) offers for monitoring bandwidth, to help you decide which methods you´d like to investigate in more detail.  The methods are covered in more detail in o…
This tutorial demonstrates a quick way of adding group price to multiple Magento products.

743 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now