如何在ColdFusion中格式化条纹时间戳



我从条纹请求中获得的字段之一是创建字段,其中包含" 1351894331"的值。我尝试在ColdFusion中使用dateformat()格式化,但这没有解决。我想这是某种日期类型/时间戳,需要在dateformatter之前转换它,但是我需要使用什么?那是什么类型的日期格式?

谢谢

可能是1970-01-01的秒数?此代码:

<cfoutput>#dateAdd("s", 1351894331, createDateTime(1970, 1, 1, 0, 0, 0))#</cfoutput>

输出:

{ts '2012-11-02 21:12:11'}

那会围绕您期望的时间戳吗?

您阅读了"条纹"文档?如果我想知道某件事是如何工作的,我的第一个通话港将是RTFM。适当地说,如果稍微放了不变。

一时兴起,我搜索了"在您中创建了什么格式的条纹为您创建的时间戳"。第一个链接到达这里。第二个链接是在strip.com的文档上的相关问题,该问题说:

是的,所有条纹时间均在UTC中表示为Unix时期。

只是为了验证Unix时期日期,我也搜索了它。答案是:

unix时间,[...]被定义为自1970年1月1日午夜协调通用时间(UTC)以来经过的秒数

当然,如果您的意思是其他一些"条纹",则必须详细说明。

这是一个Unix时间戳 - 自1970年1月1日以来的秒数 - 通常用作存储日期的方法。

,但不在CFML中,该日期是自1899年12月30日以来的浮动天数。

要将UNIX时间戳转换为CF日期编号,您需要在一天内按秒数(86400),然后添加两个日期之间的天数。

<cfset UnixTime = 1351894331 />
<!--- days between 1-Jan-1970 and 30-Dec-1899) --->
<cfset UnixTimeOffset = 25569 />
<cfset CfTime = UnixTimeOffset + UnixTime/86400 />

然后,您可以在任何日期函数中使用CfTime变量,并且它们将照常工作。

Stripe是CFPayment中受支持的网关(经过良好测试的库,可帮助您避免编写电子商务管道代码),并具有日期转换的辅助功能。您可以在此处查看这些方法:

https://github.com/ghidinelli/cfpayment/blob/master/api/gateway/gateway/stripe/stripe.cfc

<cffunction name="dateToUTC" output="false" access="public" returntype="any" hint="Take a date and return the number of seconds since the Unix Epoch">
    <cfargument name="date" type="any" required="true" />
    <cfreturn dateDiff("s", dateConvert("utc2Local", "January 1 1970 00:00"), arguments.date) />
</cffunction>
<cffunction name="UTCToDate" output="false" access="public" returntype="date" hint="Take a UTC timestamp and convert it to a ColdFusion date object">
    <cfargument name="utcdate" required="true" />
    <cfreturn dateAdd("s", arguments.utcDate, dateConvert("utc2Local", "January 1 1970 00:00")) />
</cffunction>

最新更新