Tôi đang làm việc trên một chương trình yêu cầu ngày của một sự kiện để được trả lại. Tôi đang tìm một "Ngày", không phải là "Ngày giờ". Có phải là một kiểu dữ liệu trả về chỉ là ngày ... là có?Ngày và Ngày giờ
Trả lời
Không có. DateTime
đại diện cho một số điểm trong thời gian bao gồm một ngày và một thời gian. Tuy nhiên, bạn có thể truy xuất phần ngày qua thuộc tính Date
(đây là một số khác DateTime
với thời gian được đặt thành 00:00:00
).
Và bạn có thể truy lục các thuộc tính ngày riêng lẻ qua Day
, Month
và Year
.
Bạn có thể trả về DateTime khi phần thời gian là 00:00:00 và chỉ cần bỏ qua nó. Các ngày được xử lý dưới dạng số nguyên dấu thời gian, do đó, có ý nghĩa khi kết hợp ngày với thời gian như hiện tại trong số nguyên.
Thật không may, không phải trong .Net BCL. Ngày thường được biểu diễn dưới dạng đối tượng DateTime với thời gian được đặt thành nửa đêm.
Như bạn có thể đoán, điều này có nghĩa là bạn có tất cả các vấn đề về múi giờ của nhân viên xung quanh nó, mặc dù đối tượng Date bạn muốn hoàn toàn không xử lý múi giờ.
Bạn có thể thử một trong các cách sau:
DateTime.Now.ToLongDateString();
DateTime.Now.ToShortDateString();
Nhưng không có "Ngày" gõ vào BCL.
Loại ngày chỉ là bí danh của loại DateTime được VB.NET sử dụng (như int trở thành Số nguyên). Cả hai loại này đều có thuộc tính Date trả về cho bạn đối tượng có phần thời gian được đặt là 00:00:00.
Đúng. [Trang tài liệu MSDN cho VB.NET Loại ngày] (http://msdn.microsoft.com/en-us/library/3eaydw6e.aspx) nói: * Loại tương ứng trong Khuôn khổ .NET là [System.DateTime] (http://msdn.microsoft.com/en-us/library/system.datetime.aspx) cấu trúc. * – miroxlav
Đối với điều này, bạn cần sử dụng ngày, nhưng bỏ qua giá trị thời gian.
Thông thường một ngày sẽ là một DateTime với thời điểm 00:00:00
Loại DateTime
có một tài sản mà trả về DateTime
với giá trị thời gian thiết lập như trên .Date
.
Đối tượng DateTime có Thuộc tính chỉ trả về phần ngày của giá trị.
public static void Main()
{
System.DateTime _Now = DateAndTime.Now;
Console.WriteLine("The Date and Time is " + _Now);
//will return the date and time
Console.WriteLine("The Date Only is " + _Now.Date);
//will return only the date
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
Câu trả lời này không đúng. Ngày trả về một 'DateTime' với thời gian được đặt thành 0:00:00 –
Tạo lớp trình bao bọc. Một cái gì đó như thế này:
public class Date:IEquatable<Date>,IEquatable<DateTime>
{
public Date(DateTime date)
{
value = date.Date;
}
public bool Equals(Date other)
{
return other != null && value.Equals(other.value);
}
public bool Equals(DateTime other)
{
return value.Equals(other);
}
public override string ToString()
{
return value.ToString();
}
public static implicit operator DateTime(Date date)
{
return date.value;
}
public static explicit operator Date(DateTime dateTime)
{
return new Date(dateTime);
}
private DateTime value;
}
Và phơi bày bất cứ điều gì của value
bạn muốn.
ngầm và rõ ràng là sai? – Behrooz
Tôi muốn đề xuất rằng hàm tạo của bạn nên đặt [DateTime.Kind] (http://msdn.microsoft.com/en-us/library/system.datetime.kind (v = vs.110) .aspx) thành 'DateTime.Kind ' DateTimeKind.Unspecified' để khi serialized nó được deserialized mà không cần chuyển đổi (có thể thay đổi ngày dựa trên khác nhau trong múi giờ). – OffHeGoes
@OffHeGoes Đặt DateTime.Kind thành 'DateTimeKind.Utc'. * Không * đặt nó thành 'DateTimeKind.Unspecified' bởi vì điều đó sẽ đảm bảo nó được tuần tự hóa/deserialized với một bù đắp múi giờ bao gồm! Một ngày dương lịch là như nhau bất kể múi giờ, vì vậy đừng để hệ thống điều chỉnh nó. – Suncat2000
Tôi đã tạo đơn giản Date struct cho những lần bạn cần một ngày đơn giản mà không phải lo lắng về phần thời gian, múi giờ, địa phương so với utc, v.v.
Date today = Date.Today;
Date yesterday = Date.Today.AddDays(-1);
Date independenceDay = Date.Parse("2013-07-04");
independenceDay.ToLongString(); // "Thursday, July 4, 2013"
independenceDay.ToShortString(); // "7/4/2013"
independenceDay.ToString(); // "7/4/2013"
independenceDay.ToString("s"); // "2013-07-04"
int july = independenceDay.Month; // 7
Cảm ơn! Điều đó rất hữu ích. – garfbradaz
Không có Date
DataType.
Tuy nhiên bạn có thể sử dụng DateTime.Date
để chỉ nhận ngày.
E.G.
DateTime date = DateTime.Now.Date;
Có cấu trúc Ngày tháng và các đối tượng có thể được khai báo là loại Ngày tháng. –
@KalebAnderson không có trong thực thi mặc định .NET, không có. Nếu bạn đang nói về Ngày VB.net, đó vẫn là một DateTime. –
'DateTime.Now.Date' giống với' DateTime.Today'. Có 'DateTime.UtcNow' trả về giá trị ngày-giờ làm thời gian quốc tế (UTC), nhưng không có phương thức hoặc thuộc tính tương đương UTC cho Today; 'DateTimeKind.UtcNow.Date' là biểu thức thích hợp. – Suncat2000
public class AsOfdates
{
public string DisplayDate { get; set; }
private DateTime TheDate;
public DateTime DateValue
{
get
{
return TheDate.Date;
}
set
{
TheDate = value;
}
}
}
Đưa ra một số giải thích cho câu trả lời của bạn sẽ hữu ích. – Guanxi
- 1. Ngày giờ, Ngày giờ? và LINQ
- 2. Tham gia Ngày và Giờ tới Ngày giờ trong C#
- 3. Ngày giờ mới() và mặc định (Ngày giờ)
- 4. ExtJS ngày và múi giờ
- 5. Định dạng ngày và giờ
- 6. Biên dịch ngày và giờ
- 7. Đường ray - lấy ngày từ ngày và giờ đóng dấu
- 8. Cách tạo ngày và giờ ngẫu nhiên giữa hai ngày?
- 9. Php nhận số ngày và giờ còn lại từ ngày
- 10. Tạo ngày giờ trong Rails bằng tháng, ngày và năm
- 11. Nhận ngày và giờ khác nhau theo ngày, giờ, phút và giây trong Android
- 12. MySQL: Chèn ngày giờ vào trường ngày giờ khác
- 13. Nhóm theo ngày Postgresql Ngày giờ
- 14. Ngày xử lý TSQL từ ngày giờ
- 15. Ngày, giờ, phút, giây giữa hai ngày
- 16. Định dạng ngày giờ Ngày trong năm
- 17. Khi nào sử dụng ngày và giờ riêng biệt thay vì một ngày giờ riêng lẻ
- 18. PHP Ngày và giờ chuyển đổi chuỗi thành Ngày giờ MySQL
- 19. Nhận ngày giờ từ năm, ngày trong năm và giờ trong SQL Server 2008 R2
- 20. Mysql/Php - Ngày và giờ hiện tại
- 21. Lấy ngày và giờ hiện tại
- 22. Ngày và giờ trong Emacs Lisp
- 23. Đọc csv với ngày và giờ
- 24. DateTimePicker: chọn cả ngày và giờ
- 25. lấy ngày và giờ hiện tại
- 26. Biên dịch ngày và giờ trong FPGA
- 27. DateTime nhóm theo ngày và giờ
- 28. Erlang và ngày giờ hiện tại
- 29. PHP sai ngày/giờ
- 30. Đặt NSDate thành ngày, giờ và múi giờ cụ thể
Nếu bạn đang sử dụng một giá trị DateTime như một ngày, thiết lập Kind để UTC. Không có điều chỉnh múi giờ để xử lý. DateTime date = DateTime.SpecifyKind (DateTime.Today, DateTimeKind, Utc); – Suncat2000
Vâng, tôi có thể nói từ kinh nghiệm sử dụng 'date' cho bất cứ điều gì là một ý tưởng tồi trừ khi bạn chắc chắn 100% ứng dụng của bạn sẽ chỉ hoạt động trong một múi giờ. Tiết kiệm mọi thứ dưới dạng 'datetime' mang lại cho bạn tốt nhất cả hai thế giới, bao gồm cả phê bình nhất, một cách dễ dàng để tránh những cơn ác mộng múi giờ nếu cấu hình múi giờ của máy chủ thay đổi ... và bắt đầu ghi dữ liệu theo cách bạn không lường trước được. 'Datetime' có thể cứu bạn ở đó,' ngày' không thể nào cả, và sẽ trở nên khó mà sửa được nếu bạn bắt đầu viết 'date' xuống với bối cảnh múi giờ sai. – Kelseydh