c#中的日期时间格式
本文关键字:时间 格式 日期 | 更新日期: 2023-09-27 18:07:55
我在c#和Sql server中也有DateTime数据类型。现在,当插入一个值时,它试图插入"12-08-2015 23:06:10",但是Sql Server接受12小时格式的日期时间。这是抛出错误
我尝试了以下方法来转换日期:
1) Convert.ToDateTime(DateTime.Now.ToString("G"));
2) Convert.ToDateTime(String.Format("{0:G}",DateTime.Now));
我需要以下格式的日期时间:"MM/dd/yyyy HH: MM:ss" AM/PM
如有任何帮助,不胜感激。
完整代码如下:
实体类
[Table("TB_USERS")]
public class Users_mast
{
[Key]
public int user_id { get; set; }
[Column (TypeName="VARCHAR")]
[MaxLength (15)]
[Required]
public string user_fname { get; set; }
[Column (TypeName="VARCHAR")]
[StringLength (10,MinimumLength=1)]
public string user_mname { get; set; } // middle name
[Column(TypeName = "VARCHAR")]
[MaxLength(30)]
[Required]
public string user_lname { get; set; }
[Column (TypeName="VARCHAR")]
[MaxLength(50)]
[Required]
public string user_email { get; set; }
[Column(TypeName = "VARCHAR")]
[MaxLength(10)]
[Required]
public string user_mobile { get; set; }
[Column(TypeName = "VARCHAR")]
[MaxLength(10)]
[Required]
public string username { get; set; }
[Column(TypeName = "VARCHAR")]
[StringLength(10,MinimumLength=6)]
[Required]
public string pwd { get; set; }
[Required]
public DateTime created_date { get; set; }
public DateTime last_modified_date { get; set; } // can be NULL
[Column (TypeName="VARBINARY(MAX)")]
public byte[] user_image { get; set; }
[Column(TypeName = "bit")]
public bool status { get; set; } // Active | Inactive (1 | 0 )
}
上下文类
public class context : DbContext
{
public context()
: base("name=sqlConn")
{
}
public DbSet<Users_mast> Users { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
}
}
最后,调用类
public class test_try
{
context obj = new context();
public void add()
{
obj.Users.Add(new Users_mast() {user_fname="Agnib", user_lname="Pyne", user_email="a@gmail.com", user_mobile="9830972301", username="agnib", pwd="As1232", created_date=DateTime.Now, status=true });
obj.SaveChanges();
}
}
在调用类中,"created_date=DateTime"。现在"抛出错误。
请帮。
您不必担心日期格式。只需将参数添加为Date类型:
cmd.Parameters.Add("@Date", SqlDbType.Date).Value = DateTime.Now;
我假设你正在使用参数,你应该,以避免SQL注入问题。
编辑:因为我看到了其他答案,请不要将日期转换为字符串,以便将其插入DB中,这是不需要的。
您可以使用下面的命令显示一个带有AM/PM标识符的12小时的日期时间。
string date = DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss tt");
输出为"01/31/2015 12:01:01 PM"
如果你只想把你的日期作为一个标准的DateTime变量发送到数据库,你不需要格式化它——SQL Server会自己处理的。
如果你真的发现文化是一个问题,你可以编程设置线程的当前文化,像这样:
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
你可以在这里阅读更多内容:
https://msdn.microsoft.com/en-us/library/8kb3ddd4 (v = vs.110) . aspx
https://msdn.microsoft.com/en-us/library/zdtaw1bw (v = vs.110) . aspx
https://msdn.microsoft.com/en-us/library/5hh873ya (v =应用程序). aspx
使用这个
string text = dateTime.ToString("MM/dd/yyyy HH:mm:ss tt",
new CultureInfo("en-US"));