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"。现在"抛出错误。

请帮。

c#中的日期时间格式

您不必担心日期格式。只需将参数添加为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"));