Chia sẻ qua


Hành vi và định dạng của cột ngày và giờ

Trong Microsoft Dataverse, bạn có thể chỉ định cách hiển thị giá trị ngày và giờ cho người dùng cũng như cách điều chỉnh chúng theo múi giờ.

Có hai tùy chọn cho cột ngày và giờ.

  • Hành vi: Có nên điều chỉnh giá trị cho múi giờ hay không.
  • Định dạng: Có hiển thị phần thời gian của giá trị hay không.

Hành vi

Dataverse lưu trữ tất cả các giá trị ngày tháng và giờ theo múi giờ UTC. Khi ứng dụng của bạn hiển thị các giá trị hoặc giá trị xử lý do người dùng nhập, Dataverse và các ứng dụng dựa trên mô hình có thể điều chỉnh theo múi giờ của người dùng bằng các tùy chọn Hành vi này.

  • Người dùng cục bộ: Điều chỉnh giá trị theo múi giờ của người dùng. Đây là hành vi mặc định cho định dạng Ngày và giờ . Bạn có thể thay đổi điều này một lần thành một hành vi khác.
  • Không phụ thuộc vào múi giờ: Không chuyển đổi múi giờ. Đây là hành vi mặc định cho định dạng Chỉ ngày .
  • Chỉ ngày: Không chuyển đổi múi giờ. Không giống như không phụ thuộc vào múi giờ, phần thời gian không được lưu trữ.

Múi giờ của người dùng được đặt trong tùy chọn cá nhân, không phải múi giờ hệ thống trong Windows, Android, iOS hoặc macOS. Tuy nhiên, múi giờ của hệ thống có thể ảnh hưởng đến các tập lệnh của máy khách hoạt động với Ngày của JavaScript.

Định dạng

Tất cả các cột ngày và giờ đều có phần thời gian trừ khi hành vi của nó là Chỉ ngày. Định dạng xác định xem có hiển thị phần thời gian của giá trị hay không.

  • Ngày và giờ: Hiển thị ngày và giờ của giá trị.
  • Chỉ ngày: Chỉ hiển thị phần ngày của giá trị.

Lưu ý

Người dùng vẫn có thể thay đổi phần thời gian nếu Định dạngChỉ ngày. Ví dụ, bằng cách gọi API Web hoặc bằng cách sử dụng điều khiển có phần thời gian. Điều này khác với Hành vi chỉ có ngày, trong đó phần thời gian không được lưu trữ chút nào.

Hướng dẫn sử dụng

Sử dụng hành vi không phụ thuộc vào múi giờ khi không yêu cầu thông tin về múi giờ, chẳng hạn như giờ nhận phòng khách sạn. Với lựa chọn này, người dùng ở mọi múi giờ đều thấy cùng một giá trị ngày và giờ.

Sử dụng hành vi Chỉ ngày khi không yêu cầu thông tin về thời gian trong ngày và múi giờ, chẳng hạn như sinh nhật hoặc ngày kỷ niệm. Với lựa chọn này, người dùng ở mọi múi giờ đều thấy cùng một giá trị ngày chính xác.

Hành vi không phụ thuộc vào múi giờ với định dạng Chỉ ngày thực tế giống với hành vi Chỉ ngày . Sử dụng cách đầu tiên nếu bạn không chắc chắn liệu mình có cần khoảng thời gian đó trong tương lai hay không.

Quan trọng

Tránh định dạng Chỉ ngày với hành vi cục bộ người dùng . Người dùng ở các múi giờ khác nhau có thể thấy ngày khác nhau, điều này không mong muốn trong hầu hết các trường hợp. Khi người dùng đặt ngày trong ứng dụng dựa trên mô hình, phần thời gian sẽ tự động được đặt thành nửa đêm theo múi giờ của họ. Điều này có thể khiến ngày đó xuất hiện sớm hơn hoặc muộn hơn một ngày đối với những người dùng khác.

Ví dụ

Hiển thị giá trị

Dataverse lưu trữ 2023-10-15T07:30:00Z (hoặc 2023-10-15 chỉ dành cho hành vi ngày ). Người dùng trong múi giờ UTC-8 sẽ thấy những thông tin này trong ứng dụng dựa trên mô hình hoặc với yêu cầu API Web cho giá trị được định dạng:

Hành vi Định dạng Hiển thị giá trị
Địa phương người dùng Ngày và giờ Ngày 14 tháng 10 năm 2023, 11:30 tối
Địa phương người dùng Chỉ ngày Ngày 14 tháng 10 năm 2023
Múi giờ Độc lập Ngày và giờ Ngày 15 tháng 10 năm 2023, 7:30 sáng
Múi giờ Độc lập Chỉ ngày Ngày 15 tháng 10 năm 2023
Chỉ ngày - Ngày 15 tháng 10 năm 2023

Nhập giá trị vào ứng dụng

Người dùng ở múi giờ UTC-8 nhập October 14th, 2023, 11:30 pm vào ứng dụng dựa trên mô hình. Giá trị được lưu dưới dạng Dataverse :

Hành vi Định dạng Giá trị được lưu trong Dataverse
Địa phương người dùng Ngày và giờ 2023-10-15T07:30:00Z
Địa phương người dùng Chỉ ngày 2023-10-15T07:30:00Z
Múi giờ Độc lập Ngày và giờ 2023-10-14T23:30:00Z
Múi giờ Độc lập Chỉ ngày 2023-10-14T23:30:00Z
Chỉ ngày - 2023-10-14

Nếu người dùng chỉ nhập ngày October 14th, 2023, phần thời gian được coi là 12:00 AM.

Hành vi Định dạng Giá trị được lưu trong Dataverse
Địa phương người dùng Chỉ ngày 2023-10-14T08:00:00Z
Múi giờ Độc lập Chỉ ngày 2023-10-14T00:00:00Z
Chỉ ngày - 2023-10-14

Nhập giá trị không hợp lệ vào ứng dụng

Mỗi khách hàng có cách khác nhau để xử lý dữ liệu đầu vào không hợp lệ. Ví dụ, theo múi giờ Thái Bình Dương, giờ tiết kiệm ánh sáng ban ngày bắt đầu vào ngày 12 tháng 3 năm 2023 lúc 2:00 sáng, tức là tăng thời gian lên một giờ thành 3:00 sáng. Khoảng thời gian từ 2:00 sáng đến 3:00 sáng ngày hôm đó không tồn tại. Khi người dùng cố gắng nhập giá trị trong khoảng thời gian đó, ứng dụng có thể thực hiện một trong những hành động sau:

  • Chuyển sang thời gian hợp lệ trước đó hoặc tiếp theo.
  • Trở về giá trị đã biết cuối cùng.
  • Hiển thị thông báo lỗi.
  • Không hiển thị thời gian từ 2:00 sáng đến 3:00 sáng trong công cụ chọn thời gian để người dùng không thể chọn chúng ngay từ đầu.

Tương tự như vậy, các máy khách khác nhau có cách khác nhau để xử lý các khoảng thời gian lặp lại. Ví dụ, theo múi giờ Thái Bình Dương, giờ tiết kiệm ánh sáng ban ngày kết thúc vào ngày 5 tháng 11 năm 2023 lúc 2:00 sáng, lùi thời gian lại một giờ thành 1:00 sáng. Khoảng thời gian từ 1:00 sáng đến 2:00 sáng ngày hôm đó được lặp lại hai lần. Ví dụ như 1:30 sáng có thể ám chỉ cả hai múi giờ. Nếu bạn cần hiển thị hoặc nhập thời gian rõ ràng trong phạm vi đó, tốt nhất là tạm thời chuyển sang múi giờ không sử dụng giờ mùa hè.

Nhận giá trị thô với Web API

Dataverse lưu trữ 2023-10-15T07:30:00Z (hoặc 2023-10-15 chỉ dành cho hành vi ngày ). Người dùng ở mọi múi giờ có thể nhận được những thông tin này bằng cách yêu cầu Web API cho giá trị:

Hành vi Định dạng Giá trị thô
Địa phương người dùng Ngày và giờ 2023-10-15T07:30:00Z
Địa phương người dùng Chỉ ngày 2023-10-15T07:30:00Z
Múi giờ Độc lập Ngày và giờ 2023-10-15T07:30:00Z
Múi giờ Độc lập Chỉ ngày 2023-10-15T07:30:00Z
Chỉ ngày - 2023-10-15

Nhận giá trị với API khách hàng

Người dùng ở múi giờ UTC-8 nhập October 14th, 2023, 11:30 pm vào ứng dụng dựa trên mô hình. Các hàm API của khách hàng như formContext.getAttribute(<column name>).getValue() trả về giá trị với các điều chỉnh múi giờ được áp dụng:

Hành vi Định dạng JavaScript dateValue.toUTCString()
Địa phương người dùng Ngày và giờ 2023-10-15 07:30 (UTC)
Địa phương người dùng Chỉ ngày 2023-10-15 07:30 (UTC)

Đối với hành vi không phụ thuộc vào múi giờ , giá trị Ngày của JavaScript nằm trong múi giờ của trình duyệt:

Hành vi Định dạng JavaScript dateValue.toString()
Múi giờ Độc lập Ngày và giờ 2023-10-14 23:30 (múi giờ của trình duyệt)
Múi giờ Độc lập Chỉ ngày 2023-10-14 23:30 (múi giờ của trình duyệt)

Giá trị ngày trong JavaScript luôn có thành phần thời gian. Đó là lý do tại sao hành vi Chỉ ngày có thành phần thời gian là 12:00 AM:

Hành vi Định dạng JavaScript dateValue.toString()
Chỉ ngày - 2023-10-15 00:00 (múi giờ của trình duyệt)

Lưu ý

Giá trị ngày tháng trong JavaScript bị ảnh hưởng bởi múi giờ của trình duyệt, dựa trên cài đặt hệ điều hành của thiết bị.

Đối với hành vi cục bộ của người dùng, kết quả API của khách hàng phải được hiểu là giá trị UTC. Sử dụng Date.getUTCDate(), Date.getUTCHours(), v.v. để làm việc với nó. Để có được những gì người dùng nhìn thấy, hãy áp dụng getTimeZoneOffsetMinutes. Không sử dụng Date.getDate(), Date.getHours(), v.v. vì chúng sẽ hiển thị giá trị theo múi giờ của trình duyệt.

Đối với hành vi không phụ thuộc vào múi giờchỉ ngày , kết quả API của khách hàng phải được hiểu là giá trị theo múi giờ của trình duyệt. Sử dụng Date.getDate(), Date.getHours(), v.v. để làm việc với nó. Đừng sử dụng Date.getUTCDate(), Date.getUTCHours(), v.v. vì bạn không cần phải điều chỉnh theo bất kỳ múi giờ nào.

Thay đổi hành vi cục bộ của người dùng

Trừ khi nhà xuất bản của giải pháp được quản lý ngăn chặn điều này, bạn có thể thay đổi hành vi của các cột ngày tùy chỉnh hiện có từ Cục bộ người dùng thành Chỉ ngày hoặc Không phụ thuộc vào múi giờ. Đây là sự thay đổi một lần.

Việc thay đổi hành vi cột sẽ ảnh hưởng đến các giá trị của cột đã được thêm hoặc sửa đổi sau khi thay đổi hành vi cột. Các giá trị cột hiện có vẫn còn trong cơ sở dữ liệu ở định dạng múi giờ UTC. Để thay đổi hành vi của các giá trị cột hiện có từ UTC sang Chỉ ngày, bạn có thể cần sự trợ giúp của nhà phát triển để chuyển đổi hành vi của các giá trị ngày và giờ hiện có trong cơ sở dữ liệu.

Cảnh báo

Trước khi thay đổi hành vi của một cột ngày và giờ hiện có, bạn nên xem lại tất cả quan hệ phụ thuộc của cột, chẳng hạn như quy tắc công việc, quy trình làm việc, cột tính toán hoặc cột tổng số nhằm đảm bảo rằng không có vấn đề nào phát sinh do thay đổi hành vi. Sau khi thay đổi hành vi của cột ngày và giờ, hãy mở từng quy tắc kinh doanh, quy trình làm việc, cột đã tính toán và cột tổng hợp phụ thuộc vào cột mà bạn đã thay đổi, xem lại thông tin và lưu thông tin đó để đảm bảo rằng hành vi và giá trị của cột ngày và giờ mới nhất được sử dụng.

Thay đổi hành vi trong khi nhập giải pháp

Khi bạn nhập giải pháp có chứa cột Ngày với hành vi cục bộ của người dùng , bạn có thể thay đổi hành vi thành Chỉ ngày hoặc Không phụ thuộc vào múi giờ.

Lưu ý

Bạn chỉ có thể thay đổi hành vi của cột Chỉ ngày hoặc Ngày và giờ được quản lý hiện có nếu bạn là nhà xuất bản. Để thực hiện thay đổi đối với các trường này, bạn phải nâng cấp giải pháp đã thêm cột Chỉ ngày hoặc Ngày và giờ . Thông tin thêm: Nâng cấp hoặc cập nhật giải pháp

Ngăn chặn việc thay đổi hành vi

Nếu bạn đang phân phối cột ngày tùy chỉnh trong giải pháp được quản lý, hãy ngăn những người sử dụng giải pháp của bạn thay đổi hành vi bằng cách đặt thuộc tính CanChangeDateTimeBehavior được quản lý thành False. Thông tin thêm: Đặt thuộc tính được quản lý cho các cột

Các toán tử truy vấn ngày và giờ không được hỗ trợ cho hành vi Chỉ ngày

Các toán tử truy vấn liên quan đến ngày và thời gian sau đây không hợp lệ đối với hành vi Chỉ ngày . Lỗi ngoại trừ toán tử không hợp lệ được bỏ qua khi một trong số những toán tử sau đây được sử dụng trong truy vấn.

  • Muộn hơn X Phút
  • Quá X giờ
  • X giờ qua
  • X giờ tới

Xem thêm

Khắc phục sự cố về ngày và giờ trong các ứng dụng dựa trên mô hình
Tạo và chỉnh sửa cột
Xác định các cột được tính toán để tự động hóa các phép tính thủ công
Thuộc tính được quản lý theo cột
Thuộc tính được quản lý
Blog: Làm việc với múi giờ trong Dataverse
Cấu hình hành vi và định dạng của cột ngày và giờ bằng mã