最近迷上了HTTP协议,报文响应的时候有个首部字段Date,它的值就是使用格林尼治标准时间,俗称“GTM”。
// 格林治尼时间格式
// Fri, 02 Feb 2024 13:00:09 GMT
查阅了相关资料,发现格林治尼时间比北京时间晚8个小时,开始分析:
根据时间格式,第一个字母表示星期,星期的相关英文缩写为:
// 星期一 全称 Monday 简写 Mon
// 星期二 全称 Tuesday 简写 Tues
// 星期三 全称 Wednesday 简写 Wed
// 星期四 全称 Thursday 简写 Thur
// 星期五 全称 Friday 简写 Fri
// 星期六 全程 Saturday 简写 Sat
// 星期日 全称 Sunday 简写 Sun
第二个数值为日,如果是个位数需要添加0,表示01、02、03、04、05、06......31。
接下来就是月份,相关英文缩写:
// 一月 全称 January 简写 Jan
// 二月 全称 February 简写 Feb
// 三月 全称 March 简写Mar
// 四月 全称 April 简写Apr
// 五月 全称 May 简写May
// 六月 全称 June 简写 Jun
// 七月 全称 July 简写 Jul
// 八月 全称 August 简写Aug
// 九月 全称 September 简写 Sept
// 十月 全称 October 简写 Oct
// 十一月 全称 November 简写 Nov
// 十二月 全称 December 简写 Dec
2024 13:00:09表示的就是年份、小时:分钟:秒,这个没有什么好讲的了,中间有个空格,注意书写格式就行了。
以下就是完整的类代码:
<火山程序 类型 = "通常" 版本 = 1 />
包 解决方案.时间转换
类 格林尼治标准时间 <公开 @全局类 = 真>
{
方法 取格林尼治标准时间 <公开 静态 类型 = 文本型>
{
// Fri, 02 Feb 2024 13:00:09 GMT
// 2024年2月2日星期五13:00:09 GMT
// 一月 全称 January 简写 Jan
// 二月 全称 February 简写 Feb
// 三月 全称 March 简写Mar
// 四月 全称 April 简写Apr
// 五月 全称 May 简写May
// 六月 全称 June 简写 Jun
// 七月 全称 July 简写 Jul
// 八月 全称 August 简写Aug
// 九月 全称 September 简写 Sept
// 十月 全称 October 简写 Oct
// 十一月 全称 November 简写 Nov
// 十二月 全称 December 简写 Dec
// 星期一 全称 Monday 简写 Mon
// 星期二 全称 Tuesday 简写 Tues
// 星期三 全称 Wednesday 简写 Wed
// 星期四 全称 Thursday 简写 Thur
// 星期五 全称 Friday 简写 Fri
// 星期六 全程 Saturday 简写 Sat
// 星期日 全称 Sunday 简写 Sun
变量 毫秒时间戳 <类型 = 小数>
变量 格林尼治时间 <类型 = 小数>
变量 星期 <类型 = 文本型>
变量 日 <类型 = 文本型>
变量 月 <类型 = 文本型>
毫秒时间戳 = 取毫秒时间戳 (取现行时间 ())//取现行时间,这里的现行时间表示的是本地时间,咱电脑使用的是北京时间,再根据现行时间取出毫秒时间戳
格林尼治时间 = 毫秒时间戳到时间 ((长整数)毫秒时间戳 - 8 * 60 * 60 * 1000) // 格林尼治时间比北京时间晚8个小时,用现行时间减去8个小时的毫秒时间戳,就能得到格林尼治时间
//接下来根据格林尼治时间取相关的星期、日、月份、年份、时间等。
// 星期
如果真 (取星期几 (格林尼治时间) == 1) // 星期日
{
星期 = "Sun"
}
如果真 (取星期几 (格林尼治时间) == 2) // 星期一
{
星期 = "Mon"
}
如果真 (取星期几 (格林尼治时间) == 3) // 星期二
{
星期 = "Tues"
}
如果真 (取星期几 (格林尼治时间) == 4) // 星期三
{
星期 = "Wed"
}
如果真 (取星期几 (格林尼治时间) == 5) // 星期四
{
星期 = "Thur"
}
如果真 (取星期几 (格林尼治时间) == 6) // 星期五
{
星期 = "Fri"
}
如果真 (取星期几 (格林尼治时间) == 7) // 星期六
{
星期 = "Sat"
}
// 日
如果真 (取日 (格林尼治时间) == 1) // 由于取到的日是1,所以需要文本前面加上0,1~9都是同样的操作。
{
日 = "01"
}
如果真 (取日 (格林尼治时间) == 2)
{
日 = "02"
}
如果真 (取日 (格林尼治时间) == 3)
{
日 = "03"
}
如果真 (取日 (格林尼治时间) == 4)
{
日 = "04"
}
如果真 (取日 (格林尼治时间) == 5)
{
日 = "05"
}
如果真 (取日 (格林尼治时间) == 6)
{
日 = "06"
}
如果真 (取日 (格林尼治时间) == 7)
{
日 = "07"
}
如果真 (取日 (格林尼治时间) == 8)
{
日 = "08"
}
如果真 (取日 (格林尼治时间) == 9)
{
日 = "09"
}
如果真 (取日 (格林尼治时间) >= 10) // 这里取出来的日是两位数,直接转成文本就行。
{
日 = 到文本 (取日 (格林尼治时间))
}
// 月
如果真 (取月份 (格林尼治时间) == 1) // 一月
{
月 = "Jan"
}
如果真 (取月份 (格林尼治时间) == 2) // 二月
{
月 = "Feb"
}
如果真 (取月份 (格林尼治时间) == 3) // 三月
{
月 = "Mar"
}
如果真 (取月份 (格林尼治时间) == 4) // 四月
{
月 = "Apr"
}
如果真 (取月份 (格林尼治时间) == 5) // 五月
{
月 = "May"
}
如果真 (取月份 (格林尼治时间) == 6) // 六月
{
月 = "Jun"
}
如果真 (取月份 (格林尼治时间) == 7) // 七月
{
月 = "Jul"
}
如果真 (取月份 (格林尼治时间) == 8) // 八月
{
月 = "Aug"
}
如果真 (取月份 (格林尼治时间) == 9) // 九月
{
月 = "Sept"
}
如果真 (取月份 (格林尼治时间) == 10) // 十月
{
月 = "Oct"
}
如果真 (取月份 (格林尼治时间) == 11) // 十一月
{
月 = "Nov"
}
如果真 (取月份 (格林尼治时间) == 12) // 十二月
{
月 = "Dec"
}
返回 (星期 + ", " + 日 + " " + 月 + " " + 到文本 (取年份 (格林尼治时间)) + " " + 到文本 (取小时 (格林尼治时间)) + ":" + 到文本 (取分钟 (格林尼治时间)) + ":" + 到文本 (取秒 (格林尼治时间)) + " GMT")//返回格林尼治时间
}
}
直接静态调用,调用方法如下:
取格林尼治标准时间 ()
调试输出格林尼治标准时间 如下: