我有一个每五分钟运行一次的Azure Function应用。该文档的时间戳字段使用
DateTime.Now
我住在英国,目前英国夏令时为18年9月26日,比格林尼治标准时间早1小时。我的Azure数据中心在英国南部。时间戳错误了一个小时。例如。 20:01以19:01的形式存储在文档中。我该如何纠正?
答案 0 :(得分:3)
无服务器代码的想法是抽象出代码实际运行的位置。因此,Azure函数默认为UTC时间。您可以通过添加WEBSITE_TIME_ZONE
作为应用程序的本地时间来设置本地时区。参见Can I set specific time zone to Azure Functions app?。
答案 1 :(得分:1)
您可以在代码中处理此问题,对于英国,您可以使用以下代码,这些代码应会根据夏时制自动进行调整。
import java.util.*;
/**
*/
public class sacDemo
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in); //Creates new scanner object.
sac sac = new sac(); //Creates accessor object to retrieve variables from sac class.
int bal;
double air;
double[] dep = new double[5];;
double[] wit = new double[7];
double[] d = dep;
double[] w = wit;
w = sac.getWit();
d = sac.getDep();
System.out.println("What is your annual interest rate?");
air = input.nextInt();
air = air/10;
System.out.println("Your deposits for the month were: ");
for(int i=0;i<5;i++){
System.out.println(dep[i]);
}
System.out.println("Your withdrawals for the month were: ");
for(int i=0;i<6;i++){
System.out.println(wit[i]);
}
}
}
在1月1日,TimeZoneInfo ukTimeZone = TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time");
DateTime utcDate = new DateTime(2019, 1, 1, 0, 0, 0, DateTimeKind.Utc);
DateTime ukTime = TimeZoneInfo.ConvertTimeFromUtc(utcDate, ukTimeZone);
Console.WriteLine(utcDate == ukTime);
的值应等于ukTime
,因为一年中英国当时使用的时区是UTC
时区,等于GMT
。
6月1日,英国时间应该比UTC
早一个小时,因为英国将在一年中的那个时间切换到UTC
时区。
BST
答案 2 :(得分:1)