Tôi mới sử dụng NodaTime và tôi muốn triển khai nó trong ứng dụng của mình.Làm thế nào để phân tích cú pháp chuỗi ngày thành đối tượng NodaTime?
Tôi làm cách nào để phân tích chuỗi ngày thành đối tượng NodaTime?
Dưới đây là những gì tôi hiện có:
var dateInput = "06/11/2015";
var pattern = InstantPattern.CreateWithInvariantCulture("dd/MM/yyyy");
var parseResult = pattern.Parse(dateInput);
var localDate = parseResult.Value;
DateTimeZone tzNZ = DateTimeZoneProviders.Tzdb["Asia/Hong_Kong"];
ZonedDateTime result = localDate.InZone(tzNZ);
biến LOCALDATE của tôi bây giờ là 2015-11-06T00:00:00Z
(và dựa trên những gì tôi đọc trong Format ISO, có Z trong phần cuối cùng chỉ ra rằng đó là UTC)
kết quả của tôi biến bây giờ là 2015-11-06T13:00:00 NZ (+13)
Nhưng tôi không chắc chắn liệu mình có đang đi đúng hướng hay không.
Đây là những gì tôi thực sự muốn.
- Chuyển đổi (chuỗi ngày)
dateInput
đến một đối tượng NodaTime với định dạng saudd/MM/yyyy
- Và sau đó có nó như là UTC sau đó chuyển sang một loại
long
dữ liệu sau đó lưu nó vào cơ sở dữ liệu - Sau đó cố gắng truy xuất dữ liệu đã lưu, sau đó sử dụng múi giờ cụ thể. Nói
Asia/Hong_Kong
Có thể không?
EDIT
var dateInput = "06/11/2015";
var pattern = LocalDatePattern.CreateWithInvariantCulture("dd/MM/yyyy");
LocalDate parseResult = pattern.Parse(dateInput).Value;
DateTimeZone tzHK = DateTimeZoneProviders.Tzdb["Asia/Hong_Kong"];
LocalTime time = GetTimeOfDay();
LocalDateTime localDateTime = parseResult + time;
// change it to UTC then convert it to
// long data type then save it to the database
// methods
private LocalTime GetTimeOfDay()
{
var instant = SystemClock.Instance.Now;
var tz = DateTimeZoneProviders.Tzdb["Asia/Hong_Kong"];
return instant.InZone(tz).TimeOfDay;
}
Tôi có đoạn này và kịch bản này, nơi người dùng có thể chỉ đầu vào date
nói 06/11/2015
sau đó khi lưu nó vào cơ sở dữ liệu, tôi cần bây giờ là lúc hiện tại (thời điểm hiện tại của người sử dụng) để xem mục đích. Lý do tại sao tôi chuyển đổi nó thành long
là bởi vì tôi đang sử dụng Khung thực thể.
Điều này có được khuyến khích không?
Câu hỏi về chỉnh sửa của bạn - Tại sao bạn có họ nhập ngày hoàn toàn trong trường hợp này? Điều đó có vẻ như bạn đang định thời gian đặt hàng với ngày và giờ hiện tại. –
@MattJohnson Đây chỉ là một ý tưởng tôi đã đưa ra. và tôi nhận ra nó không có ý nghĩa gì cả. Tôi nghĩ tôi cần xóa nó. –
Vâng, nếu bạn chỉ là dấu thời gian, thì không có phần còn lại nào trong số này được áp dụng, vì bạn sẽ chỉ sử dụng 'SystemClock.Instance.Now' để có được' Instant' dựa trên UTC hiện tại. Hoặc chỉ cần sử dụng 'DateTime.UtcNow', hoặc chức năng tương tự trong db của bạn, và sau đó bạn sẽ không cần Noda Thời gian cả. –