转换GMT秒数为日期时间格式-Delphi源码。

最近在写PE分析工具的时候,需要转换TimeDateStamp字段值为日期时间格式,这是Delphi的源码。 

// 把GMT时间的秒数转换成日期时间格式
function GetGMTDateTime(Value:Int64):TDateTime;
var
  Year,Month,Day:Word;
  Hour,Min,Sec,MSec:Word;
  iYear,iDay:Word;
  iHour,iMin,iSec:Word;
  RInt,i:Integer;
  TempDate,TempTime:TDateTime;
begin
  
// GMT是从1970年1月1日开始计算的,所以把它作为初值
  Year: = 1970 ; Month: = 1 ; Day: = 1 ;
  Hour:
= 0 ; Min: = 0 ; Sec: = 0 ; MSec: = 0 ;
  
// 计算文件创建的年份
  iYear: = Value div ( 365 * 24 * 60 * 60 );
  Year:
= Year + iYear;
  
// 计算文件除创建整年份以外还有多少天
  iDay: = (Value mod ( 365 * 24 * 60 * 60 )) div ( 24 * 60 * 60 );
  
// 把闰年的年份数计算出来
  RInt: = 0 ;
  
for  i: = 1970  to Year - 1   do
    begin
      
if  (i mod  4 ) = 0  then
        RInt:
= RInt + 1 ;
    end;

  
// 计算文件创建的时间(几时)
  iHour: = ((Value mod ( 365 * 24 * 60 * 60 )) mod ( 24 * 60 * 60 )) div ( 60 * 60 );
  Hour:
= Hour + iHour;
  
// 计算文件创建的时间(几分)
  iMin: = (((Value mod ( 365 * 24 * 60 * 60 )) mod ( 24 * 60 * 60 )) mod ( 60 * 60 )) div  60 ;
  Min:
= Min + iMin;
  
// 计算文件创建的时间(几秒)
  iSec: = (((Value mod ( 365 * 24 * 60 * 60 )) mod ( 24 * 60 * 60 )) mod ( 60 * 60 )) mod  60 ;
  Sec:
= Sec + iSec;
  
// 合并日期和时间
  TempDate: = EncodeDate(Year,Month,Day);
  TempTime:
= EncodeTime(Hour,Min,Sec,MSec);
  
// 由于闰年的二月份有29天,闰年年份一年有366年天,而平年一年有365天,上面
  
// 是用365计算的,所以要减去闰年年份多出来的一天
  
// 最后返回值合并日期和时间到TDateTime类型中
  Result: = (TempDate + iDay - RInt) + TempTime;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Temp:TDateTime;
begin
  
// 708992537为秒数
  Temp: = GetGMTDateTime( 708992537 );
  
// 取出日期
  Edit1.Text: = DateToStr(Temp);
  
// 取出时间
  Edit2.Text: = TimeToStr(Temp);
end;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用Java中的SimpleDateFormat类来将时间转换日期格式。具体代码如下: ```java long timestamp = 162826440000L; // 时间戳,单位为毫秒 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // 定义日期格式 String date = sdf.format(new Date(timestamp)); // 将时间转换日期格式 System.out.println(date); // 输出:2021-08-06 ``` 其中,`SimpleDateFormat`类的构造方法中传入的字符串参数表示日期格式,具体含义如下: - `yyyy`:年份,如2021 - `MM`:月份,如08 - `dd`:日期,如06 通过调用`format()`方法,将时间转换为指定的日期格式。最后输出的结果为`2021-08-06`。 ### 回答2: Java中时间戳是以毫秒为单位的长整型数字,表示自1970年1月1日00:00:00GMT以来的毫秒数。因为时间戳底层是一个整型数字,不便于阅读和使用,所以需要将其转换日期格式。 Java提供了将时间转换日期格式的方法,可以使用SimpleDateFormat类来实现。以下是将时间转换日期格式的示例代码: ```java long timeStamp = 1611023113000L; // 时间戳 Date date = new Date(timeStamp); // 将时间转换成Date类型 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // 指定日期格式 String dateStr = sdf.format(date); // 将Date类型转换成指定格式的字符串 System.out.println(dateStr); // 输出转换后的日期字符串 ``` 上面的代码首先将时间转换成Date类型,然后通过SimpleDateFormat指定日期格式,最后调用format方法将Date类型转换成指定格式的字符串。 在指定日期格式的字符串中,yyyy表示年份,MM表示月份,dd表示天数。如果需要包含时间信息,还可以加入hh(小时)、mm(分钟)和ss(秒钟)等时间字段。 在转换时间戳时,还需要注意时间戳的单位是毫秒,Date的构造函数参数也是毫秒。如果时间戳是秒级别的,需要将其乘以1000转成毫秒级别。 使用以上代码可以方便地将时间转换成指定格式日期字符串,便于我们处理和显示时间信息。 ### 回答3: Java时间戳是指从1970年1月1日00: 00: 00 UTC(协调世界时)开始计算的秒数,这意味着它代表了从该时间以来经过的秒数。简言之,它是一种以秒为单位的时间表示形式。通常,Java的时间戳是一个长整型数字。 要将Java时间转换日期格式,我们需要使用Java提供的一些内置方法和类。 首先,我们需要使用java.util.Date类。这个类包含了许多方法,可用于将时间转换日期格式。我们可以使用Date(long time)构造函数将时间转换日期对象。 然后,我们可以使用SimpleDateFormat类来格式日期。SimpleDateFormat类可以提供各种格式化选项,包括日、月、年、小时、分钟和秒等。 下面是Java时间转换日期格式yyyy-mm-dd的实现代码: ```java import java.text.SimpleDateFormat; import java.util.Date; public class TimeStampConversion { public static void main(String[] args) { long timeStamp = System.currentTimeMillis(); Date date = new Date(timeStamp); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); String formattedDate = dateFormat.format(date); System.out.println("Formatted date is " + formattedDate); } } ``` 在上面的代码中,我们首先获取当前时间戳,然后创建一个Date对象。接下来,我们使用SimpleDateFormat类格式日期对象,该类使用"yyyy-MM-dd"格式字符串设置日期格式。最后,我们打印格式化后的日期字符串。 这里需要注意的一点是,我们使用"yyyy-MM-dd"格式字符串设置日期格式。这意味着我们将得到一个形如“2022-05-20”的日期格式字符串。如果您想使用不同的日期格式,请调整SimpleDateFormat的模式字符串。 Java的时间转换日期格式是一个非常基础的问题,但在Java开发中使用频率非常高。通过简单的代码,我们可以将时间转换为可读性较好的日期格式

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值