相关疑难解决方法(0)

在select语句中将Datetime列从UTC转换为本地时间

我正在做一些SQL选择查询,并希望将我的UTC日期时间列转换为本地时间,以便在我的查询结果中显示为本地时间.注意,我不希望通过代码进行此转换,而是在我对数据库进行手动和随机SQL查询时.

sql sql-server

189
推荐指数
11
解决办法
38万
查看次数

我应该将什么值传递给TimeZoneInfo.FindSystemTimeZoneById(String)?

我想使用该TimeZoneInfo.FindSystemTimeZoneById(String)方法,但我不知道使用什么值作为输入?

我在哪里可以获得id所需的值列表FindSystemTimeZoneById

.net c# timezone

81
推荐指数
5
解决办法
6万
查看次数

如何使用TimeZoneInfo在夏令时期间获取当地时间?

我正在尝试使用DateTimeOffset来传达任何时区的特定时刻.我无法弄清楚如何使用TimeZoneInfo来处理夏令时.

var dt = DateTime.UtcNow;
Console.WriteLine(dt.ToLocalTime());

var tz = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");
var utcOffset = new DateTimeOffset(dt, TimeSpan.Zero);
Console.WriteLine(utcOffset.ToOffset(tz.BaseUtcOffset));
Run Code Online (Sandbox Code Playgroud)

打印出:

6/2/2010 4:37:19 PM
6/2/2010 3:37:19 PM -06:00

我在中央时区,而且我们目前正处于夏令时.我想把第二行读到:

6/2/2010 4:37:19 PM -05:00

BaseUtcOffset显然不会根据DST进行更改.

如何使用正确的偏移值获得正确的时间?

c# timezone datetimeoffset

78
推荐指数
4
解决办法
6万
查看次数

如何在特定时区转换DateTime?

我发现很难理解UTC是如何工作的.

我必须做以下事情,但如果我得到了正确的结果,我仍然感到困惑.

目标:

  1. 确保数据库中的所有已保存日期均为UTC格式
  2. 更新DefaultTimezone是在马尼拉时间
  3. 确保所有返回的日期都在马尼拉时间

所以代码是:

public ConvertDate(DateTime? dateTime)
{
    if (dateTime != null)
    {
        Value = (DateTime)dateTime;
        TimeZone = GetFromConfig.DefaultTimeZone(); 
    }
}


public ConvertDate(DateTime? dateTime, int GMTTimeZone)
{
    if (dateTime != null)
    {
        Value = (DateTime)dateTime;
        TimeZone = GMTTimeZone;
    }
}


public int TimeZone
{
    get { return m_TimeZone; }
    set { m_TimeZone = value; }
}


DateTime m_Value;
public DateTime Value
{
    get { return m_Value; }
    set 
    { 
        m_Value = value;
        DateTime converted = m_Value.ToUniversalTime().ToLocalTime();
    } …
Run Code Online (Sandbox Code Playgroud)

c# datetime utc

30
推荐指数
3
解决办法
7万
查看次数

Linux- Windows时区映射?

Windows中的所有时区都以这样的方式显示

(GMT+10:00) Canberra, Melbourne, Sydney,

GMT和Offset以及这个地方.反过来,Linux在/ usr/share/zoneinfo/[Continent]/[Place]中将每个时区都作为目录映射.

我需要将每个Windows时区映射到我的应用程序的Linux时区.喜欢

(GMT+05:30) Chennai, Kolkata, Mumbai, New Delhi => Asia/Calcutta
Run Code Online (Sandbox Code Playgroud)

现在问题在于俄罗斯和美国之间的国际日期线西.在Windows中,它标记为(GMT-12:00)国际日期线西,并且从各种来源我发现在Linux中它的Etc/GMT + 12.

(GMT-12:00) International Date Line West => Etc/GMT+12
Run Code Online (Sandbox Code Playgroud)

(GMT+12:00) Coordinated Universal Time+12 => Etc/GMT-12
(GMT-02:00) Coordinated Universal Time-02 => Etc/GMT+2
(GMT-11:00) Coordinated Universal Time-11 => Etc/GMT+11 
Run Code Online (Sandbox Code Playgroud)

这让我感到困惑,我的应用程序与时间戳wrt UTC和UTC偏移密切配合.所以这个映射让我和应用程序混乱.

任何人都可以解释为什么在同一个地方都有-12和+12偏移的反之亦然?

提前致谢 :)

linux windows timezone

11
推荐指数
1
解决办法
9697
查看次数

.NET中的"美国东部标准时间"与"东部标准时间"

在列出所返回IdTimeZoneInfos的所有属性时,将TimeZoneInfo.GetSystemTimeZones显示两个版本的EST:美国东部标准时间和东部标准时间.有什么不同?

我也看到美国山地标准时间和山地标准时间,但我很确定这是因为美国版本适用于亚利桑那州,它没有观察到夏令时.我假设常规的山地标准时间适用于山区时区的其他美国州.我对么?

美国时区的有用链接:http://www.timetemperature.com/tzus/time_zone.shtml

.net c# timezone

11
推荐指数
1
解决办法
1万
查看次数

那么最好使用try/catch吗?

什么时候最好使用try和catch?当我使用try和catch(有些甚至-1我......)回答问题时,我得到了愤怒的回答.我用谷歌搜索它并找到了这篇文章以及这个stackoverflow 问题.

我举一些例子:

  1. 我有一个带有时区ID的下拉列表,当用户选择他的时区时我正在更新数据库.在其他应用程序中,我从数据库中提取该值并重新计算用户当前时间和日期.可以选择DB中的数据拼写错误(DB或bug中的硬编码更改).在用户的日期时间的转换方法我正在使用try和catch,有些人告诉我这是错误的!我可以使用for循环来检查数据库中的值,但是每次转换日期时间都要花费更多...

  2. 我必须声明XML文件是否使用此代码格式良好:

    protected bool IsValidXML(string xmlFile)
    {
        try
        {
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(xmlFile);
        }
        catch(XmlException ex)
        {
            ///write to logger
            return false;
        }
        return true;
    }
    
    Run Code Online (Sandbox Code Playgroud)

    我看不到任何其他方法来检查xml文件.

  3. 有时我在我的应用程序中有一部分我正在写一个文件.写入文件可能会导致exeprtion,原因很多,其他一些进程在写入或其他时使用此文件.所以我通常使用这段代码:

     using (StreamWriter w = new StreamWriter(fs))
     {
         try
         {
             w.Write("** (Line) " + someValue + " **" + Environment.NewLine);                       
             w.Flush();                       
         }
         catch(IOExeption ex){}
         finally
         {
             w.Close();   
         }
     }
    
    Run Code Online (Sandbox Code Playgroud)

总之,我看到了一些使用try和catch以及不使用方法的方法.我看到的文章中的一句话说如果发生异常,你需要知道它.,但是在大多数时候处理泛型应用程序时,我知道会发生异常,但大多数时候我都不知道它为什么会发生,所以我以前无法捕捉到它(就像我写的那些例子),所以何时最好使用try和catch

在ASP.NET中的同一级别,页面有一个Error事件,您可以像这样捕获:

this.Error += new EventHandler(Page_Error); //this = instance of System.Web.UI.Page
Run Code Online (Sandbox Code Playgroud)

事件是否与try …

c# exception try-catch

8
推荐指数
1
解决办法
1480
查看次数

如何将UTC转换为澳大利亚东部夏令时(AEDT)?

我们正在从贸易伙伴的API下载数据.直到现在我们正在使用"E. Australia Standard Time"并且工作正常.

在夏令时开始后,我们的贸易伙伴表示他们正在使用"澳大利亚东部夏令时(AEDT)".

我使用以下代码从UTC转换为"E. Australia Standard Time".

DateTime utcTime = DateTime.UtcNow;
TimeZoneInfo objTimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("E. Australia Standard Time");
DateTime TPDateTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime, objTimeZoneInfo);
Run Code Online (Sandbox Code Playgroud)

但是当我使用"E. Australia Daylight Time"或"Australian Eastern Daylight Time(AEDT)"时,我会听到以下错误

The time zone ID 'E. Australia Daylight Time' was not found on the local computer.
The time zone ID 'Australian Eastern Daylight Time (AEDT)' was not found on the local computer.
Run Code Online (Sandbox Code Playgroud)

我应该将什么时区ID传递给FindSystemTimeZoneById()方法以正确转换为澳大利亚东部夏令时(AEDT)?

c# timezone timezone-offset

2
推荐指数
1
解决办法
1291
查看次数