Udostępnij przez


DateAdd, DateDiffi TimeZoneOffset funkcje

Functions Dotyczy
DateAdd
DateDiff
Aplikacje kanwy Copilot Studio Desktop przepływy formuły Dataverse kolumny Oparte na modelu Aplikacje interfejsu wiersza polecenia platformy Power Platform Funkcje usługi PowerVerse w usłudze Power Pages
TimeZoneOffset Aplikacje kanwy Copilot Studio Desktop przepływy oparte na modelu Aplikacje oparte na modelu Interfejs wiersza polecenia platformy PowerVerse funkcje Power Pages
Function Dotyczy
DateAdd
DateDiff
TimeZoneOffset

Funkcje te służą do dodawania różnicy do wartości daty/godziny, odnajdywania takiej różnicy i wykonywania konwersji między czasem lokalnym i czasem UTC.

Opis

Funkcja DateAdd dodaje liczbę jednostek do wartości daty/godziny. Wynik to nowa wartość daty/godziny. Możliwe jest również odjęcie liczby jednostek od wartości daty/godziny, określając wartość ujemną.

Funkcja DateDiff zwraca różnicę między dwiema wartościami daty/godziny. Wynik to liczba całkowita jednostek.

W przypadku obu funkcji jednostkami mogą być TimeUnit.Milliseconds, TimeUnit.Seconds, TimeUnit.Minutes, TimeUnit.Hours, TimeUnit.Days, TimeUnit.Months, TimeUnit.Quarters lub TimeUnit.Years. Domyślna jednostka używana przez obie funkcje to TimeUnit.Days jako jednostki.

Funkcja TimeZoneOffset zwraca liczbę minut między czasem lokalnym użytkownika a UTC (uniwersalny czas koordynowany).

Możesz użyć polecenia DateAdd z elementem TimeZoneOffset , aby przekonwertować między czasem lokalnym użytkownika a czasem UTC (uniwersalny czas koordynowany). Dodanie TimeZoneOffset spowoduje przekonwertowanie czasu lokalnego na czas UTC i odjęcie go (dodanie wartości ujemnej) spowoduje przekonwertowanie czasu UTC na czas lokalny.

Zobacz też Typy danych Date, Time i DateTime oraz Praca z datami i godzinami, aby uzyskać więcej informacji.

Składnia

DateAdd( DateTime, Dodawanie [, Jednostki ] )

  • Data/godzina - wymagane. Wartość daty/godziny używana w ramach operacji.
  • Dodatek - wymagany. Liczba Jednostek do dodania do wartości DateTime.
  • Jednostki - Opcjonalnie. Typ Jednostki do dodania: TimeUnit.Milliseconds, TimeUnit.Seconds, TimeUnit.Minutes, TimeUnit.Hours, TimeUnit.Days, TimeUnit.Months, TimeUnit.Quarters lub TimeUnit.Years. Jeśli typ nie zostanie określony, jako jednostka używana jest wartość TimeUnit.Days.

DateDiff( StartDateTime, EndDateTime [, Units ] )

  • StartDateTime - wymagane. Początkowa wartość daty/godziny.
  • EndDateTime - wymagane. Końcowa wartość daty/godziny.
  • Jednostki - Opcjonalnie. Typ Jednostki do odjęcia: TimeUnit.Milliseconds, TimeUnit.Seconds, TimeUnit.Minutes, TimeUnit.Hours, TimeUnit.Days, TimeUnit.Months, TimeUnit.Quarters lub TimeUnit.Years. Jeśli typ nie zostanie określony, jako jednostka używana jest wartość TimeUnit.Days.

TimeZoneOffset( [ DateTime ] )

  • Data/godzina - Opcjonalne. Wartość daty/godziny, dla której ma zostać zwrócone przesunięcie. Domyślnie używana jest bieżąca wartość daty/godziny.

Przykłady

We wszystkich poniższych przykładach założono, że bieżąca data i godzina to 15 lipca 2013 r., 13:02:00.

Prosty DateAdd

Wzór Opis Wynik
Text( ( DateAddNow(), 3 ),
"dd-mm-yyyy hh:mm" )
Dodaje trzy dni (jednostki domyślne) do bieżącej daty i godziny. "18-07-2013 13:02"
Text( ( DateAddNow(), 4, TimeUnit.Hours ),
"dd-mm-yyyy hh:mm" )
Dodaj cztery godziny do bieżącej daty i godziny. "15-07-2013 17:02"
Text( ( DateAddToday(), 1, TimeUnit.Months ),
"dd-mm-yyyy hh:mm" )
Dodaje miesiąc do bieżącej daty bez godziny, ponieważ funkcja Today nie zwraca składnika godziny. "15-08-2013 00:00"
Text( ( DateAddNow(), -30, TimeUnit.Minutes ),
"dd-mm-yyyy hh:mm" )
Odejmuje 30 minut od bieżącej daty i godziny. "15-07-2013 12:32"

Prosty DateDiff

Wzór Opis Wynik
DateDiff( Now(), DateValue("1/1/2014") ) Zwraca różnicę między dwiema jednostkami w domyślnych jednostkach – TimeUnit.Days 170
DateDiff( Now(), DateValue("1/1/2014"), TimeUnit.Months ) Zwraca różnicę między dwiema wartościami w jednostkach TimeUnit.Months 6
DateDiff( Now(), Today(), TimeUnit.Minutes ) Zwraca różnicę między bieżącą datą/godziną i bieżącą datą (bez godziny) w minutach. Ponieważ wartość zwracana przez funkcję Now jest późniejsza niż wartość zwracana przez funkcję Today, wynik będzie ujemny. -782

Różnica dat z wynikami ułamkowymi

Funkcja DateDiff zwraca tylko liczbę całkowitą odjętą jednostek, a precyzja jest podana w określonej jednostce. Aby obliczyć różnicę z większą precyzją, należy użyć mniejszej jednostki i odpowiednio przekonwertować wynik, jak w poniższych przykładach.

Wzór Opis Wynik
DateDiff( TimeValue("09:45:00"), TimeValue("10:15:36"), TimeUnit.Hours ) Minuty/sekundy są ignorowane, a różnica jest oparta na czasie zaokrąglonym w górę do godziny. 1
DateDiff( TimeValue("09:45:00"), TimeValue("10:15:36"), TimeUnit.Minutes )/60 Minuty są używane w różnicy, a wynik jest dzielony przez 60, aby uzyskać różnicę w godzinach. 0.5
DateDiff( TimeValue("09:45:00"), TimeValue("10:15:36"), TimeUnit.Seconds )/3600 Minuty i sekundy są używane w różnicy, a wynik jest dzielony przez 3600, aby uzyskać różnicę w godzinach. 0.51

Wykonywanie konwersji na czas UTC

Aby przekonwertować na utc (uniwersalny czas koordynowany), dodaj wartość TimeZoneOffset dla danego czasu.

Na potrzeby przykładu załóżmy, że aktualna data i godzina to 15 lipca 2013 r., 13:02:00 czasu pacyficznego (PDT, UTC-7). Aby określić bieżącą godzinę w formacie UTC, użyj następującej funkcji:

  • DateAdd( Now(), TimeZoneOffset(), TimeUnit.Minutes )

TimeZoneOffset wartość domyślna bieżącej godziny, więc nie trzeba przekazywać jej argumentu.

Aby wyświetlić wynik, użyj funkcji Text w formacie dd-mm-yyyy hh:mm, co spowoduje zwrócenie wartości 15-07-2013 20:02.

Wykonywanie konwersji z czasu UTC

Aby przekonwertować z czasu UTC, odejmij TimeZoneOffset wartość (dodając wartość ujemną) dla danego czasu.

Na potrzeby przykładu załóżmy, że data i godzina w formacie UTC, 15 lipca 2013 r., 20:02:00, jest przechowywana w zmiennej o nazwie GodzinaPoczatkowa. Aby dostosować godzinę dla strefy czasowej użytkownika, wywołaj funkcję w następujący sposób:

  • DateAdd( StartTime, −TimeZoneOffset( StartTime ), TimeUnit.Minutes )

Zanotuj znak ujemny przed TimeZoneOffset odjęciem przesunięcia, a nie dodaj go.

Aby wyświetlić wynik, użyj funkcji Text w formacie dd-mm-yyyy hh:mm, co spowoduje zwrócenie wartości 15-07-2013 13:02 czasu pacyficznego.