当我搜索最大时间时。人们总是通过 VS 调试器来回答这个问题。即 23:59:59.9999999
因为我需要 24 种格式的凌晨 12 点。我猜应该是 00:00:00 但是... C# .NET 假设如下:
var xx = DateTime.MaxValue.ToString("HH:mm:ss.fffffff");
Run Code Online (Sandbox Code Playgroud)
调试之前的时候会打印23:59:59.9999999
我应该用什么?有关系吗?有什么不同?
应该使用00:00:00吗 ?或23:59:59.9999999特别是在 SQL-Server 中保存时间时。
大问题或者我的意思是,当您通过hh:mm:ss 将24 小时格式转换为 12 小时格式时,最终用户的行为11:59:59 PM 会很糟糕,不是吗?它应该是12:00:00 AM.
毕竟,《黑曜石时代》根据用例很好地回答了这个问题。
我有一个代码,我在其中计算日期之间的一些间隔,为此,我将定义的间隔时间添加到一个日期,为此,我看到了 2 种方法,但我不明白其中的区别,对我来说它们是一样的:
var timespan = new TimeSpan(0, 0, 5);
var d1 = new DateTime(2010, 1, 1, 8, 0, 15);
var newDateWithTimeSpan = d1.Add(timespan);
var newDateWithSeconds = d1.AddSeconds(5);
Console.WriteLine(newDateWithTimeSpan);
Console.WriteLine(newDateWithSeconds);
Run Code Online (Sandbox Code Playgroud) 使用TSQL如何找到两次之间的差异,以毫秒为单位?
declare @start datetime = '2012-04-10 14:59:12.863',
@end datetime = '2012-04-10 14:59:13.800'
select @start, @end, 'TODO: get timespan in milliseconds between @start and @end'
Run Code Online (Sandbox Code Playgroud) 我有一个整数15791表示自纪元以来的天数和等于27.03.2013,如何在C#中进行转换?
public void method1()
{
...
int days_since_epoch = 15791;
// how convert `days_since_epoch` to "27.03.2013"
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
我知道我可以用这个来计算两个日期之间的天差:
private int DaysFromStart(DateTime date, DateTime startDate)
{
var days = date.Subtract(startDate);
return (int)days.TotalDays;
}
Run Code Online (Sandbox Code Playgroud)
但现在我想通过仅包括工作日获得两个日期之间的差异.因此,例如,如果开始日期是星期五,要检查的日期是下一个星期一,则返回值将为1.
我想从TimeSpan对象创建一个字符串,其格式为:"hhhh:mm:ss.ff".
当我使用以下内容时,我得到一个FormatException ...
private const string MAX_TIME_ALLOWED_FORMAT = @"hhhh\:mm\:ss.ff";
String myDurationSring = TimeSpan.FromSeconds(myDurationInSeconds).ToString(MAX_TIME_ALLOWED_FORMAT) : string.Empty;
Run Code Online (Sandbox Code Playgroud)
我的格式字符串是否需要一些工作或者有更好的方法吗?
我试图了解如何从定义为的SQL Server 2012表列中检索时间数据Time(7).我到处寻找,并为此而苦苦挣扎.这里有一些简单的代码,我只是试图让它工作.你能帮我么??
当下面的代码运行时(使用Visual Studio 2013),我得到了错误TimeSpan DBStartTime...:
无法将类型为"System.TimeSpan"的对象强制转换为"System.IConvertible".
我不知道如何解决这个问题.
var cnnString = ConfigurationManager.ConnectionStrings["TaktBoardsConnectionString"].ConnectionString;
SqlConnection conn = new SqlConnection(cnnString);
SqlCommand comm = new SqlCommand();
comm.CommandText = "SELECT * FROM ScheduleDetail WHERE ScheduleID = " + lstShifts.SelectedValue;
comm.CommandType = CommandType.Text;
comm.Connection = conn;
SqlDataReader reader;
conn.Open();
reader = comm.ExecuteReader();
while (reader.Read())
{
TimeSpan DBStartTime = Convert.ToDateTime(reader["StartTime"]).TimeOfDay;
TimeSpan DBEndTime = Convert.ToDateTime(reader["EndTime"]).TimeOfDay;
// Add more coding once this works.
}
conn.Close();
Run Code Online (Sandbox Code Playgroud) 如何将字符串格式化"1900-01-01 08:00:00.000"为just HH:MM并30为其添加分钟.我做了以下事情;
p[0]="1900-01-01 08:00:00.000";
TimeSpan _time = TimeSpan.ParseExact(p[0].ToString(), "HH:mm", CultureInfo.InvariantCulture);
TimeSpan addtime = TimeSpan.FromMinutes(30);
_time = _time.Add(addtime);
Run Code Online (Sandbox Code Playgroud) 我必须在DataTable中进行更多时间跨度的总和以使用下面的代码,但是总和是错误的,原因是:
DataTable(dt)值:
09:21
08:28
08:46
04:23
Total hours: 30,97 //97 minutes is not correct
Run Code Online (Sandbox Code Playgroud)
C#代码:
TimeSpan totaleOreMarcaTempo = TimeSpan.Zero;
int conta = 0;
foreach (DataRow dr in dt.Rows)
{
String OreMarcaTempo = tm.ConteggioOreGiornaliere(dr["Data"].ToString()); //This string contains at each cycle 09:21 08:28 08:46 04:23
TimeSpan oreMarcatempo = TimeSpan.Parse(OreMarcaTempo.ToString());
totaleOreMarcaTempo = totaleOreMarcaTempo + oreMarcatempo;
conta++;
}
labelTotaleOreMarcaTempoMod.Text = "" + (int)totaleOreMarcaTempo.TotalHours + ":" + totaleOreMarcaTempo.Minutes.ToString(); //30:58
Run Code Online (Sandbox Code Playgroud) 我想在本地文化中输出一个时间跨度,将其作为csv导入Excel中.时间跨度包含毫秒.
与英国文化,这意味着,例如00:00:01.2345678
与德国文化,这应该是00:00:01,2345678(逗号而不是点)
但无论我为CultureInfo对象尝试哪种设置,我都无法让它工作:
TimeSpan t = new TimeSpan(12345678);
var cul = CultureInfo.GetCultureInfo("de");
// cul.DateTimeFormat.FullTimeSpanPositivePattern == "d':'h':'mm':'ss','FFFFFFF";
// (note the comma)
Console.WriteLine(String.Format(cul, "{0}", t));
// expected: "00:00:01,2345678" (with ,)
// actual: "00:00:01.2345678" (with .)
Run Code Online (Sandbox Code Playgroud)
到目前为止,我甚至无法分辨CultureInfo类的哪些属性定义了这个.这是硬编码的吗?
我知道我可以明确地定义输出格式:`String.Format("{0:hh \:mm \:ss \,FFFFFFF}",t)
但有没有办法使用a IFormatProvider,所以c#将使用给定的文化?
timespan ×10
c# ×9
datetime ×6
.net ×2
sql-server ×2
.net-4.6 ×1
asp.net ×1
casting ×1
cultureinfo ×1
format ×1
formatting ×1
localization ×1
sql ×1
string ×1
t-sql ×1