PDA

View Full Version : hỏi về datetime trong C#



hieupxd2cntt
14-12-2009, 21:28
cho em hỏi cách chuyển dữ liệu từ string sang datetime trong C#.
em muốn tính khoảng cách thời gian giữa 2 ngày trong C#.Nhưng em thực hiện phép trừ thì cần phải convert nó sang datetime.
nhưng nó chuyển sang datetime nó gặp 1 vấn đề là nếu em dùng cách này
DateTime ngay=Convert.ToDateTime(Ngay1);
thì nó chuyển sang định dạng theo cài dặt datetime trong máy
Nhưng em muốn chuyển sang định dạng datetime là MM/DD/YYYY hơặc DD/MM/YYYY tùy em.mà không ảnh hưởng đến chuyện em đổi định dạng ngày giờ trong máy.Vậy em phải làm thế nào?
Có cách Convert nào giúp em không?Mong các anh chị giúp em.
Em cảm ơn

tranmanhdit
14-12-2009, 22:55
Đơn giản mà bạn. DateTime tmp = DateTime.ToDay;
tmp.AddDays(2); // 2 ngày của bạn đó
DateTime là DateTime, sao có Convert được. định dạng dd/MM/yyyy hoặc MM/dd/yyyy -> chỉ là display thôi. Muốn hiển thị kiểu chi, còn tùy, nếu là xuất ra string -> tmp.ToString("dd/MM/yyyy"); -> ra kiểu dd/MM/yyyy, còn trên control, bạn vào thuộc tính của nó, xem có format cái để hiển thị không. thông thường là DisplayFormat -> set FormatString của nó.

minhquang12g
15-12-2009, 01:48
cho em hỏi cách chuyển dữ liệu từ string sang datetime trong C#.
em muốn tính khoảng cách thời gian giữa 2 ngày trong C#.Nhưng em thực hiện phép trừ thì cần phải convert nó sang datetime.
nhưng nó chuyển sang datetime nó gặp 1 vấn đề là nếu em dùng cách này
DateTime ngay=Convert.ToDateTime(Ngay1);
thì nó chuyển sang định dạng theo cài dặt datetime trong máy
Nhưng em muốn chuyển sang định dạng datetime là MM/DD/YYYY hơặc DD/MM/YYYY tùy em.mà không ảnh hưởng đến chuyện em đổi định dạng ngày giờ trong máy.Vậy em phải làm thế nào?
Có cách Convert nào giúp em không?Mong các anh chị giúp em.
Em cảm ơn
Để chuyển từ 1 string sang 1 kiểu datetime bạn định nghĩa 1 kiểu DateTime mới. Trong .Net hỗ trợ bạn các kiểu sau:


public DateTime(long ticks);
//
// Summary:
// Initializes a new instance of the System.DateTime structure to a specified
// number of ticks and to Coordinated Universal Time (UTC) or local time.
//
// Parameters:
// ticks:
// A date and time expressed in 100-nanosecond units.
//
// kind:
// One of the System.DateTimeKind values that indicates whether ticks specifies
// a local time, Coordinated Universal Time (UTC), or neither.
//
// Exceptions:
// System.ArgumentOutOfRangeException:
// ticks is less than System.DateTime.MinValue or greater than System.DateTime.MaxValue.
//
// System.ArgumentException:
// kind is not one of the System.DateTimeKind values.
public DateTime(long ticks, DateTimeKind kind);
//
// Summary:
// Initializes a new instance of the System.DateTime structure to the specified
// year, month, and day.
//
// Parameters:
// month:
// The month (1 through 12).
//
// day:
// The day (1 through the number of days in month).
//
// year:
// The year (1 through 9999).
//
// Exceptions:
// System.ArgumentOutOfRangeException:
// year is less than 1 or greater than 9999.-or- month is less than 1 or greater
// than 12.-or- day is less than 1 or greater than the number of days in month.
//
// System.ArgumentException:
// The specified parameters evaluate to less than System.DateTime.MinValue or
// more than System.DateTime.MaxValue.
public DateTime(int year, int month, int day);
//
// Summary:
// Initializes a new instance of the System.DateTime structure to the specified
// year, month, and day for the specified calendar.
//
// Parameters:
// calendar:
// The System.Globalization.Calendar that applies to this System.DateTime.
//
// month:
// The month (1 through the number of months in calendar).
//
// day:
// The day (1 through the number of days in month).
//
// year:
// The year (1 through the number of years in calendar).
//
// Exceptions:
// System.ArgumentException:
// Specified parameters evaluate to less than System.DateTime.MinValue or more
// than System.DateTime.MaxValue.
//
// System.ArgumentOutOfRangeException:
// year is not in the range supported by calendar.-or- month is less than 1
// or greater than the number of months in calendar.-or- day is less than 1
// or greater than the number of days in month.
//
// System.ArgumentNullException:
// calendar is null.
public DateTime(int year, int month, int day, Calendar calendar);
//
// Summary:
// Initializes a new instance of the System.DateTime structure to the specified
// year, month, day, hour, minute, and second.
//
// Parameters:
// month:
// The month (1 through 12).
//
// day:
// The day (1 through the number of days in month).
//
// minute:
// The minutes (0 through 59).
//
// year:
// The year (1 through 9999).
//
// hour:
// The hours (0 through 23).
//
// second:
// The seconds (0 through 59).
//
// Exceptions:
// System.ArgumentException:
// Specified parameters evaluate to less than System.DateTime.MinValue or more
// than System.DateTime.MaxValue.
//
// System.ArgumentOutOfRangeException:
// year is less than 1 or greater than 9999. -or- month is less than 1 or greater
// than 12. -or- day is less than 1 or greater than the number of days in month.-or-
// hour is less than 0 or greater than 23. -or- minute is less than 0 or greater
// than 59. -or- second is less than 0 or greater than 59.
public DateTime(int year, int month, int day, int hour, int minute, int second);
//
// Summary:
// Initializes a new instance of the System.DateTime structure to the specified
// year, month, day, hour, minute, and second for the specified calendar.
//
// Parameters:
// calendar:
// The System.Globalization.Calendar that applies to this System.DateTime.
//
// month:
// The month (1 through the number of months in calendar).
//
// day:
// The day (1 through the number of days in month).
//
// minute:
// The minutes (0 through 59).
//
// year:
// The year (1 through the number of years in calendar).
//
// hour:
// The hours (0 through 23).
//
// second:
// The seconds (0 through 59).
//
// Exceptions:
// System.ArgumentException:
// Specified parameters evaluate to less than System.DateTime.MinValue or more
// than System.DateTime.MaxValue.
//
// System.ArgumentNullException:
// calendar is null.
//
// System.ArgumentOutOfRangeException:
// year is not in the range supported by calendar.-or- month is less than 1
// or greater than the number of months in calendar.-or- day is less than 1
// or greater than the number of days in month.-or- hour is less than 0 or greater
// than 23 -or- minute is less than 0 or greater than 59. -or- second is less
// than 0 or greater than 59.
public DateTime(int year, int month, int day, int hour, int minute, int second, Calendar calendar);
//
// Summary:
// Initializes a new instance of the System.DateTime structure to the specified
// year, month, day, hour, minute, second, and Coordinated Universal Time (UTC)
// or local time.
//
// Parameters:
// month:
// The month (1 through 12).
//
// day:
// The day (1 through the number of days in month).
//
// minute:
// The minutes (0 through 59).
//
// year:
// The year (1 through 9999).
//
// hour:
// The hours (0 through 23).
//
// kind:
// One of the System.DateTimeKind values that indicates whether year, month,
// day, hour, minute and second specify a local time, Coordinated Universal
// Time (UTC), or neither.
//
// second:
// The seconds (0 through 59).
//
// Exceptions:
// System.ArgumentException:
// The specified time parameters evaluate to less than System.DateTime.MinValue
// or more than System.DateTime.MaxValue. -or-kind is not one of the System.DateTimeKind
// values.
//
// System.ArgumentOutOfRangeException:
// year is less than 1 or greater than 9999. -or- month is less than 1 or greater
// than 12. -or- day is less than 1 or greater than the number of days in month.-or-
// hour is less than 0 or greater than 23. -or- minute is less than 0 or greater
// than 59. -or- second is less than 0 or greater than 59.
public DateTime(int year, int month, int day, int hour, int minute, int second, DateTimeKind kind);
//
// Summary:
// Initializes a new instance of the System.DateTime structure to the specified
// year, month, day, hour, minute, second, and millisecond.
//
// Parameters:
// month:
// The month (1 through 12).
//
// millisecond:
// The milliseconds (0 through 999).
//
// day:
// The day (1 through the number of days in month).
//
// minute:
// The minutes (0 through 59).
//
// year:
// The year (1 through 9999).
//
// hour:
// The hours (0 through 23).
//
// second:
// The seconds (0 through 59).
//
// Exceptions:
// System.ArgumentOutOfRangeException:
// year is less than 1 or greater than 9999.-or- month is less than 1 or greater
// than 12.-or- day is less than 1 or greater than the number of days in month.-or-
// hour is less than 0 or greater than 23.-or- minute is less than 0 or greater
// than 59.-or- second is less than 0 or greater than 59.-or- millisecond is
// less than 0 or greater than 999.
//
// System.ArgumentException:
// Specified parameters evaluate to less than System.DateTime.MinValue or more
// than System.DateTime.MaxValue.
public DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond);
//
// Summary:
// Initializes a new instance of the System.DateTime structure to the specified
// year, month, day, hour, minute, second, and millisecond for the specified
// calendar.
//
// Parameters:
// calendar:
// The System.Globalization.Calendar that applies to this System.DateTime.
//
// month:
// The month (1 through the number of months in calendar).
//
// millisecond:
// The milliseconds (0 through 999).
//
// day:
// The day (1 through the number of days in month).
//
// minute:
// The minutes (0 through 59).
//
// year:
// The year (1 through the number of years in calendar).
//
// hour:
// The hours (0 through 23).
//
// second:
// The seconds (0 through 59).
//
// Exceptions:
// System.ArgumentException:
// Specified parameters evaluate to less than System.DateTime.MinValue or more
// than System.DateTime.MaxValue.
//
// System.ArgumentNullException:
// calendar is null.
//
// System.ArgumentOutOfRangeException:
// year is not in the range supported by calendar.-or- month is less than 1
// or greater than the number of months in calendar.-or- day is less than 1
// or greater than the number of days in month.-or- hour is less than 0 or greater
// than 23.-or- minute is less than 0 or greater than 59.-or- second is less
// than 0 or greater than 59.-or- millisecond is less than 0 or greater than
// 999.
public DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, Calendar calendar);
//
// Summary:
// Initializes a new instance of the System.DateTime structure to the specified
// year, month, day, hour, minute, second, millisecond, and Coordinated Universal
// Time (UTC) or local time.
//
// Parameters:
// month:
// The month (1 through 12).
//
// millisecond:
// The milliseconds (0 through 999).
//
// day:
// The day (1 through the number of days in month).
//
// minute:
// The minutes (0 through 59).
//
// year:
// The year (1 through 9999).
//
// hour:
// The hours (0 through 23).
//
// kind:
// One of the System.DateTimeKind values that indicates whether year, month,
// day, hour, minute, second, and millisecond specify a local time, Coordinated
// Universal Time (UTC), or neither.
//
// second:
// The seconds (0 through 59).
//
// Exceptions:
// System.ArgumentOutOfRangeException:
// year is less than 1 or greater than 9999.-or- month is less than 1 or greater
// than 12.-or- day is less than 1 or greater than the number of days in month.-or-
// hour is less than 0 or greater than 23.-or- minute is less than 0 or greater
// than 59.-or- second is less than 0 or greater than 59.-or- millisecond is
// less than 0 or greater than 999.
//
// System.ArgumentException:
// The specified time parameters evaluate to less than System.DateTime.MinValue
// or more than System.DateTime.MaxValue. -or-kind is not one of the System.DateTimeKind
// values.
public DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, DateTimeKind kind);
//
// Summary:
// Initializes a new instance of the System.DateTime structure to the specified
// year, month, day, hour, minute, second, millisecond, and Coordinated Universal
// Time (UTC) or local time for the specified calendar.
//
// Parameters:
// calendar:
// The System.Globalization.Calendar that applies to this System.DateTime.
//
// month:
// The month (1 through the number of months in calendar).
//
// millisecond:
// The milliseconds (0 through 999).
//
// day:
// The day (1 through the number of days in month).
//
// minute:
// The minutes (0 through 59).
//
// year:
// The year (1 through the number of years in calendar).
//
// hour:
// The hours (0 through 23).
//
// kind:
// One of the System.DateTimeKind values that indicates whether year, month,
// day, hour, minute, second, and millisecond specify a local time, Coordinated
// Universal Time (UTC), or neither.
//
// second:
// The seconds (0 through 59).
//
// Exceptions:
// System.ArgumentException:
// The specified time parameters evaluate to less than System.DateTime.MinValue
// or more than System.DateTime.MaxValue. -or-kind is not one of the System.DateTimeKind
// values.
//
// System.ArgumentNullException:
// calendar is null.
//
// System.ArgumentOutOfRangeException:
// year is not in the range supported by calendar.-or- month is less than 1
// or greater than the number of months in calendar.-or- day is less than 1
// or greater than the number of days in month.-or- hour is less than 0 or greater
// than 23.-or- minute is less than 0 or greater than 59.-or- second is less
// than 0 or greater than 59.-or- millisecond is less than 0 or greater than
// 999.
public DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, Calendar calendar, DateTimeKind kind);

Ví dụ: chuyển 1 kiểu string -> DateTime
DateTime myDateTime = new DateTime(int.Parse(ngay), int.Parse(thang), int.Parse(nam));

Scripted
15-12-2009, 04:03
Đơn giản mà bạn. DateTime tmp = DateTime.ToDay;
tmp.AddDays(2); // 2 ngày của bạn đó
DateTime là DateTime, sao có Convert được. định dạng dd/MM/yyyy hoặc MM/dd/yyyy -> chỉ là display thôi. Muốn hiển thị kiểu chi, còn tùy, nếu là xuất ra string -> tmp.ToString("dd/MM/yyyy"); -> ra kiểu dd/MM/yyyy, còn trên control, bạn vào thuộc tính của nó, xem có format cái để hiển thị không. thông thường là DisplayFormat -> set FormatString của nó.

Mình thấy bạn tranmanhdit trả lời đúng rồi đó .ToString("dd/MM/yyyy");

vutrongsang
02-07-2010, 18:41
Các bạn giúp mình cái này với. Mình muốn Convert 1 chuổi string sang kiểu DateTime nhưng mà không được.

DateTime ngaysinh;
ngaysinh = DateTime.Parse(txt_ngaysinhchinhxac.Text);

Khi minh Debug thi chuoi chuyền vào là "09/01/2009". Sau khi Convert thì nó chuyển thành "09/01/2009 12:00:00 AM". Có cách Convert mà chỉ lấy đúng chuổi đã chuyền vào không. Tức là mình muốn sau khi Convert thì chỉ có "09/01/2009" thôi. Ah mà nhớ là lúc đó ngaysinh vẫn là kiểu DateTime nha.

Trân Trọng

tranmanhdit
02-07-2010, 20:14
DateTime là DateTime. Nó luôn có khúc phía sau. Thực tế không có vấn đề gì là rắc rối nếu nó có khúc phía sau. Chỉ có bạn là tối ý quá thôi, không biết cách vận dụng như thế nào kiến thức của bản thân

locskeleton
02-07-2010, 20:54
Bạn tham khảo, mình thường dùng cách này:
/// <summary>
/// Parse string to datetime
/// </summary>
/// <param name="strDateTime">input string</param>
/// <param name="datetime">output datetime</param>
/// <returns>true if success/ otherwise return false</returns>
public static bool StringToDateTime(string strDateTime, out Nullable<DateTime> datetime)
{
datetime = null;
try
{
datetime = DateTime.ParseExact(strDateTime, "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture) ;
return true;
}
catch { }
return false;
}

/// <summary>
/// Parse string to full datetime
/// </summary>
/// <param name="strDateTime">input string</param>
/// <param name="datetime">output datetime</param>
/// <returns>true if success/ otherwise return false</returns>
public static bool StringToFullDateTime(string strDateTime, out Nullable<DateTime> datetime)
{
datetime = null;
try
{
datetime = DateTime.ParseExact(strDateTime, "dd/MM/yyyy hh:mm:ss tt", System.Globalization.CultureInfo.InvariantCulture) ;
return true;
}
catch { }
return false;
}

duongdragonxxx
07-07-2010, 23:41
Mặc định kiểu datetime của hệ thống là tháng/ngày/năm. Do vậy khi nhập liệu cần lưu ý điểm này.
ở vấn đề của bạn là việc nhập liệu kiểu ngày/tháng/năm và muốn convert thành kiểu datetime. Vậy ở đây ta dùng CultureInfo, để assign các thông tin cần thiết rồi convert.
VD:
System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("vi-VN");
culture.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy";
DateTime temp = Convert.ToDateTime("18/08/1980", culture);

crykhohieu
12-11-2010, 01:22
cái "vi-VN " có ý nghĩa j vậy?

QuanN
12-11-2010, 08:43
cái "vi-VN " có ý nghĩa j vậy?
Đó là ISO codes cho ngôn ngữ và quốc gia Việt Nam, được dùng để đặt tên cho bản địa Việt Nam.