0
            string val;
            val = Request.Form["timerData"].ToString();            
            TimeSpan ts = TimeSpan.FromMilliseconds(Convert.ToInt32(val.ToString()));
            lbTime.Text = ts.ToString();
  • 这里 lbTime.Text 以 00:44:50 格式返回我的时间值。

  • 在我的 Sql 数据库中,我使用 Time(7) 数据类型作为时间,其
    默认值为 ('00:00:00.0000000')

  • 我想将此格式 00:44:50 转换为 ('00:44:50.240000') 并使用更新语句将其输入数据库。

以上时间仅供参考

请帮助我。

4

4 回答 4

1

如果您的更新语句是参数化的或者您使用存储过程,则将 a传递TimeSpantime(7)列应该可以正常工作。像这样的东西:

public static void UpdateTimestamp( int id , TimeSpan ts )
{
  using ( SqlConnection connection = new SqlConnection( "some-connect-string" ) )
  using ( SqlCommand    command    = connection.CreateCommand() )
  {
    command.CommandText = "update foo set duration = @duration where id = @id" ;

    command.Parameters.AddWithValue( "@id"       , id ) ;
    command.Parameters.AddWithValue( "@duration" , ts ) ;

    connection.Open() ;
    int rowsAffected = command.ExecuteNonQuery() ;
    connection.Close() ;

    if ( rowsAffected == 0 ) throw new InvalidOperationException( "That didn't work B^(" ) ;
    if ( rowsAffected >  0 ) throw new InvalidOperationException( "That shouldn't have happend B^(" ) ;

  }

  return ;

}
于 2012-08-20T20:35:31.760 回答
0

尝试其中之一:

DateTime date1 = new DateTime(2008, 8, 29, 19, 27, 15, 18);
CultureInfo ci = CultureInfo.InvariantCulture;

Console.WriteLine(date1.ToString("hh:mm:ss.f", ci));
// Displays 07:27:15.0
Console.WriteLine(date1.ToString("hh:mm:ss.F", ci));
// Displays 07:27:15
Console.WriteLine(date1.ToString("hh:mm:ss.ff", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.FF", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.fff", ci));
// Displays 07:27:15.018
Console.WriteLine(date1.ToString("hh:mm:ss.FFF", ci));
// Displays 07:27:15.018

您甚至可以使用更多的“FFFFF”来表示秒分数的最多七个最高有效数字。

取自:http: //msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

它有帮助吗?

于 2012-08-20T20:18:44.830 回答
0

我使用了相同的代码,唯一的错误是我在将值传递给时间跨度之前将其转换为 int

string val;
            val = Request.Form["timerData"].ToString();            
            TimeSpan ts = TimeSpan.FromMilliseconds(Convert.ToDouble(val.ToString()));
            lbTime.Text = ts.ToString();

解决了

于 2012-08-20T21:24:16.250 回答
0

在你最后的表达中你说

ts.ToString()

如果不是所有数字都为零,则此重载仅显示小数秒。您可能想要使用自定义格式字符串,如

ts.ToString(@"hh\:mm\:ss\.fffffff")

反而。这应该适用于 .NET 4.5 和 4.0。请参阅MSDN:自定义 TimeSpan 格式字符串

于 2012-08-20T21:17:13.470 回答