如何将“时间”从DateTime转换为int?

时间:2016-04-28 11:44:19

标签: c# wpf datetime datagrid converter

我有一个DataGrid,它包含几个小时的值,我想知道:

如何从我的DataGrid获取时间并将其转换为int(或double)变量。

我的目标是使用我的DataGrid时间值进行一些操作,比如在其中添加数字

实施例: 使用我的“dataGridView1.Rows [1] .Cells [2] .Value.ToString();”它将显示一个DateTime值(在我的DataGrid中),有了这个值,我想过滤掉它的时间并将其转换为int

我想要“抓住”时间的代码部分:

$(function() {
    $('#btnSignIn').click(function() {
        $.ajax({
            url: '/ValidateLogin',
            data: $('form').serialize(),
            type: 'POST',
            success: function(response) {
                console.log(response);
            },
            error: function(error) {
                console.log(error);
            }
        });
    });
});

我想得到“value”(这是DataGrid的DateTime值)并将其转换为int。

请注意: - 我的dataGrid中的日期与我无关,我只需要选择时间(是的,我知道我不能“拆分”DateTime来单独完成它们)

4 个答案:

答案 0 :(得分:4)

如果你愿意限制在毫秒级分辨率,那么这很容易。

给定一个日期/时间,你想把时间部分作为一个int,你可以得到自午夜以来的毫秒数,如下:

DateTime dateTime = DateTime.Now;
int timeMsSinceMidnight = (int)dateTime.TimeOfDay.TotalMilliseconds;

如果您想从此重新构建原始日期和时间,则需要原始日期和自午夜以来的时间(以毫秒为单位):

DateTime date = dateTime.Date; // Midnight.
DateTime restoredTime = date.AddMilliseconds(timeMsSinceMidnight);

测试程序:

DateTime dateTime = DateTime.Now;

Console.WriteLine("Original date/time: " + dateTime );

int timeMsSinceMidnight = (int)dateTime.TimeOfDay.TotalMilliseconds;

DateTime date = dateTime.Date; // Midnight.
DateTime restoredTime = date.AddMilliseconds(timeMsSinceMidnight);

Console.WriteLine("Restored date/time: " + restoredTime);

time.TimeOfDay返回的值类型为TimeSpan,方便存储时间值。

如果你想从午夜开始转动"毫秒"回到TimeSpan,您只需执行此操作:

var timeSpan = TimeSpan.FromMilliseconds(timeMsSinceMidnight);

答案 1 :(得分:1)

第一步是将字符串转换为DateTime。使用DateTime.TryParse(字符串值,out DateTime dt)。然后正如Mathew Watson正确建议的那样,使用dt.TimeOfDay.TotalMilliseconds将变量dt的值转换为毫秒。如果它符合您的要求,也可以在TotalSeconds或TotalMinutes中转换范围。 在检查单元格值是否为null之前,尽量避免直接调用ToString()方法。如果我想避免检查,我会让编译器通过使用类似:Rows [3] .Cells [2] .Value +""而不是Value.ToString()。

答案 2 :(得分:1)

混合Mathew和Mukesh Adhvaryu的答案,我进入了这个,它完全符合我的需要,谢谢你们的支持!

 txtAtiv.Text = dataGridView1.Rows[0].Cells[1].Value + "";

        string value = dataGridView1.Rows[0].Cells[2].Value + "";
        lblLeft.Text = value.Split(' ')[1];
        textStatus.Text = "";



        DateTime timeConvert;
        DateTime.TryParse(value, out timeConvert);

        double time;
        time = timeConvert.TimeOfDay.TotalMilliseconds;


        var timeSpan = TimeSpan.FromMilliseconds(time);


        lblSoma.Text = timeSpan.ToString();

答案 3 :(得分:0)

     static void Main(string[] args)
     {
        string time1 = "11:15 AM";
        string time2 = "11:15 PM";
        var t1 = ConvertTimeToInt(time1);
        var t2 = ConvertTimeToInt(time2);
        Console.WriteLine("{0}", t1);
        Console.WriteLine("{0}", t2);
        Console.WriteLine("{0:dd/MM/yyyy hh:mm tt}", ConvertIntToTime(t1));
        Console.WriteLine("{0:dd/MM/yyyy hh:mm tt}", ConvertIntToTime(t2));
        Console.ReadLine();
    }

    static long ConvertTimeToInt(string input)
    {
        var date = DateTime.ParseExact(input, "hh:mm tt", CultureInfo.InvariantCulture);
        TimeSpan span = date.TimeOfDay;
        Console.WriteLine("{0:dd/MM/yyyy hh:mm tt}", date);
        return span.Ticks;
    }

    static DateTime ConvertIntToTime(long input)
    {
        TimeSpan span = TimeSpan.FromTicks(input);
        var date = new DateTime(span.Ticks);
        Console.WriteLine("{0:dd/MM/yyyy hh:mm tt}", date);
        return date;
    }