你如何计算夏令时?

dee*_*dee 3 coldfusion timezone dst

我想在他们提供的日期和时间向不同时区的用户发送通知.我还没有实现任何东西,但我计划创建一个时间戳列并以UTC格式存储所有内容.在提交时,用户将选择一个时区,我将计算偏移量,将其添加到时间戳列,然后瞧.

我希望它很简单,但我的计划缺乏DST.我无法确定用户是否处于DST状态.

我该如何解决这个问题?我需要额外的列吗?有没有比我计划的更好的方法?

Bar*_*dan 9

您可以使用java TimeZone对象.

<cfset tzObj = createObject("java","java.util.TimeZone") >
Run Code Online (Sandbox Code Playgroud)

您可以通过执行此操作获取可用ID列表,例如"US/Pacific"

<cfset tzList = arrayToList(tzObj.getAvailableIDs()) >
Run Code Online (Sandbox Code Playgroud)

如果您可以将ID与用户区域/时区匹配,则可以执行以下操作:

tzToTest = "US/Pacific"
dateTotest = now()

<!--- determines if dateTotest in tzToTest is in DST --->
<cfset tz = tzObj.getTimeZone(tzToTest) />
<cfset isDaylightSavings = tz.inDaylightTime(dateTotest) />
Run Code Online (Sandbox Code Playgroud)