Tôi đang truy xuất dữ liệu từ một iSeries nơi có trường ngày và giờ riêng biệt. Tôi muốn tham gia chúng vào một trường DateTime trong dự án C# của tôi. Tôi không thấy cách thêm thời gian vào trường DateTime. Bạn đề nghị hoàn thành điều này như thế nào?Tham gia Ngày và Giờ tới Ngày giờ trong C#
Trả lời
Chúng được lưu trữ như thế nào? Giả sử rằng phần ngày đang được lưu trữ dưới dạng DateTime
trong nửa đêm của ngày được đề cập và thời gian là TimeSpan
, bạn chỉ có thể thêm chúng.
DateTime date = ...;
TimeSpan time = ...;
DateTime result = date + time;
Bạn có thể dễ dàng tạo TimeSpan từ trường "thời gian" của mình.
khi bạn đã có, chỉ cần làm:
TimeSpan time = GetTimeFieldData();
dateField = dateField.Add(time);
Bạn có thể làm được điều này khá dễ dàng:
DateTime dateOnly;
DateTime timeOnly;
...
DateTime combined = dateOnly.Date.Add(timeOnly.TimeOfDay);
TimeOfDay
trả về một TimeSpan
, mà sau đó bạn thêm vào ngày tháng.
Chỉnh sửa (nhờ người nhận xét bên dưới) - để an toàn, hãy sử dụng dateOnly.Date
để đảm bảo chỉ phần ngày.
Một lời cảnh báo tới người xem ở đây mà bạn phải đảm bảo rằng 'DateTime dateOnly' chỉ chứa một ngày khác, với một TimeSpan đủ lớn, khi bạn tạo thành 'Add', bạn sẽ tăng 1 ngày! – Coops
@CodeBlend là chính xác, điều này đã xảy ra với tôi. Cách tốt nhất để trang trải cho mình là: 'DateTime combined = dateOnly.Date.Add (timeOnly.TimeOfDay);' –
Tốt bắt, @RodolfoDeLosSantos! Tôi đã gửi yêu cầu cập nhật giải pháp cho phù hợp với đề xuất của bạn. –
Datetime date = new DateTime(Date1.Year, Date1.Month, Date1.Day, Time1.Hour, Time1.Minute, Time1.Second);
Bạn không thể định dạng phần ngày và thời gian thành các chuỗi riêng biệt, sau đó ghép chúng lại với nhau? Sau đó, bạn có thể phân tích chuỗi trở lại đối tượng DateTime
Không hiệu quả lắm. – Lazlo
Lưu ý rằng việc thêm thời gian vào ngày không phải là vấn đề lớn nhất của bạn ở đây. Như @Reed Copsey đã đề cập, bạn chỉ cần tạo một DateTime từ ngày và sau đó là .Add
thời gian.
Tuy nhiên, bạn cần đảm bảo rằng ngày và thời gian iSeries (thời gian Unix có thể nhất) có cùng biểu diễn như biểu diễn .Net. Vì vậy, bạn có thể cần phải chuyển đổi nó bằng cách thêm nó vào một ngày 1 tháng 1, 1970 DateTime là tốt.
Bạn có thể thêm TimeSpan
vào DateTime
và viết nội dung tương tự như thế này.
// inside consuming function
ISeriesObject obj = getMyObject();
DateTime dt = getDate(obj) + getTime(obj);
private DateTime getDate(ISeriesObject obj)
{
//return a DateTime
}
private TimeSpan getTime(ISeriesObject obj)
{
//return a TimeSpan
}
này nên làm:
var output = date.Date + time.TimeOfDay;
hoặc
var output = new DateTime(date.Year, date.Month, date.Day,
time.Hour, time.Minute, time.Second);
giả sử rằng cả hai biến date
và time
là cả hai loại DateTime
- 1. Ngày giờ, Ngày giờ? và LINQ
- 2. Ngày và Ngày giờ
- 3. Ngày giờ mới() và mặc định (Ngày giờ)
- 4. Bật Ngày hết giờ tham gia của người tham gia Luôn là NULL
- 5. Python: nhận ngày giờ trong 01 giờ
- 6. Định dạng ngày giờ trong C#
- 7. Biên dịch ngày và giờ
- 8. Nhận ngày và giờ khác nhau theo ngày, giờ, phút và giây trong Android
- 9. Ngày và giờ trong Emacs Lisp
- 10. ExtJS ngày và múi giờ
- 11. Định dạng ngày và giờ
- 12. So sánh ngày giờ trong C#
- 13. MySQL: Chèn ngày giờ vào trường ngày giờ khác
- 14. Chỉ nhận giờ/phút của ngày giờ
- 15. Biên dịch ngày và giờ trong FPGA
- 16. Bắt tất cả Ngày giờ giữa hai 'Ngày giờ trong C#
- 17. Định dạng ngày giờ Ngày trong năm
- 18. Nhận ngày giờ từ năm, ngày trong năm và giờ trong SQL Server 2008 R2
- 19. Tạo ngày giờ trong Rails bằng tháng, ngày và năm
- 20. MYSQL Ngày giờ đến giờ gần nhất
- 21. Ngày và giờ in trong Visual Studio C++ build?
- 22. Ngày giờ Mysql với múi giờ
- 23. Nhóm theo ngày Postgresql Ngày giờ
- 24. Đặt NSDate thành ngày, giờ và múi giờ cụ thể
- 25. Ngày xử lý TSQL từ ngày giờ
- 26. PHP sai ngày/giờ
- 27. Làm cách nào để hợp nhất ngày và giờ làm ngày giờ trong tập lệnh Bảng tính Google Apps?
- 28. Ngày, giờ, phút, giây giữa hai ngày
- 29. Đường ray - lấy ngày từ ngày và giờ đóng dấu
- 30. Cách tìm ngày giờ GMT theo tên quốc gia?
Tôi nghĩ rằng điều này sẽ làm việc tốt nhất cho tôi trong trường hợp này. Cảm ơn! –
điều này sẽ chỉ hoạt động nếu biến ngày có phần thời gian 00:00:00 nếu không biến thời gian sẽ được thêm vào đầu ngày và nó sẽ là kết quả bất ngờ. – batmaci
@batmaci Có, điều đó được nêu cụ thể trong câu trả lời. –