js 时间戳(毫秒级) 和 日期格式 (2011-12-13 01:45:30) 互转

本文介绍了一个JavaScript函数,用于将时间戳转换为日期格式,并实现日期到时间戳的转换,包括处理午前和午后的时间显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

// 复制粘贴  回车测试

//编码 utf-8

//在网上找了N旧 ,就没一个对的,那些  get 时分秒的  除了getUTCXXX,其它 都不能用,我是菜鸟,我也不知道为什么,整了好久  才改成 这种显示模式的


//时间戳 转 日期 

//返回 格式    2011-11-12 05:34:12
function formatDate(unix) {
       
var now = new Date(parseInt(unix) * 1);
   now =  now.toLocaleString().replace(/年|月/g, "-").replace(/日/g, " ");






   if(now.indexOf("下午") > 0) {
   
    var temp1 = now.substring(0,now.indexOf("下午"));   //2014/7/6
    var temp2 = now.substring(now.indexOf("下午")+2,now.length);  // 5:17:43
    var temp3 = temp2.substring(0,1);    //  5
    var temp4 = parseInt(temp3); // 5
    temp4 = 12 + temp4;  // 17
   
    var temp5 = temp4 + temp2.substring(1,temp2.length); // 17:17:43
    now = temp1 + temp5; // 2014/7/6 17:17:43
    now = now.replace("/","-"); //  2014-7/6 17:17:43
    now = now.replace("/","-"); //  2014-7-6 17:17:43


   }else {
    var temp1 = now.substring(0,now.indexOf("上午"));   //2014/7/6
    var temp2 = now.substring(now.indexOf("上午")+2,now.length);  // 5:17:43
    var temp3 = temp2.substring(0,1);    //  5


    var index = 1;
    var temp4 = parseInt(temp3); // 5


    if(temp4 == 0 ) {   //  00
    temp4 = "0"+temp4;

    }else if(temp4 == 1) {  // 10  11  12

   index = 2;

    var tempIndex = temp2.substring(1,2);
    if(tempIndex != ":") {
    temp4 = temp4 + "" + tempIndex; 
    }else { // 01
    temp4 = "0"+temp4;
    }
    }else {  // 02 03 ... 09
    temp4 = "0"+temp4;
    }
   
   


    var temp5 = temp4 + temp2.substring(index,temp2.length); // 07:17:43
    now = temp1 + temp5; // 2014/7/6 07:17:43
    now = now.replace("/","-"); //  2014-7/6 07:17:43
    now = now.replace("/","-"); //  2014-7-6 07:17:43
   
   }


   return now;      
       
        }


//日期 转 时间戳
function  dateConvertTime(datetime) {
    var tmp_datetime = datetime.replace(/:/g,'-');
   tmp_datetime = tmp_datetime.replace(/ /g,'-');
   var arr = tmp_datetime.split("-");
   var now = new Date(Date.UTC(arr[0],arr[1]-1,arr[2],arr[3]-8,arr[4],arr[5]));
   return parseInt(now.getTime());
    
}




alert(formatDate("1414398486000"));


alert(dateConvertTime("2014-10-27 16:28:06"));
<think>嗯,用户想知道怎么把毫秒级时间戳转成具体的期时间格式,也就是xxxx-xx-xx HH:MM:ss这样的形式。首先,我得确认他们说的毫秒级时间戳是什么。通常时间戳有两种,一种是秒级的,比如从1970年1月1开始的秒数,另一种是毫秒级的,也就是秒数乘以1000。所以,可能用户的数据是13位的数字,比如1672531200000这样的。 接下来,我需要考虑不同的编程语言怎么处理这个问题。用户可能用的是常见的语言,比如Python、JavaScript、Java或者PHP。不同的语言有不同的处理方式,所以得分别说明。不过用户可能没有明确说明,所以需要覆盖主要的几种,或者先给出通用的步骤,再具体到语言。 比如在Python里,时间戳一般是秒级的,所以如果是毫秒的话,需要除以1000。然后使用datetime模块的utcfromtimestamp或者fromtimestamp函数,取决于是否需要考虑时区。不过要注意的是,datetime对象转字符串的时候,格式化的字符串要是%Y-%m-%d %H:%M:%S这样的。比如datetime.datetime.utcfromtimestamp(ms/1000).strftime(...)。 JavaScript的话,Date对象接受的是毫秒级时间戳,所以可以直接用new Date(ms)。然后用toISOString或者toLocaleString等方法转换,但要注意时区的问题。比如toISOString会给出UTC时间,而toLocaleString可能根据本地时区显示。用户可能需要的是本地时间还是UTC时间呢?可能需要两种情况都说明一下。 Java方面,处理起来可能稍微复杂一点,因为Date类或者新的时间API。比如用java.util.Date的话,构造的时候传入毫秒数,然后用SimpleDateFormat来格式化。但SimpleDateFormat是线程不安全的,可能需要提到使用新的java.time包里的类,比如Instant.ofEpochMilli(ms).atZone(ZoneId.systemDefault())然后格式化。 PHP的话,可以用date函数,但时间戳是秒级的,所以需要把毫秒除以1000,然后用date('Y-m-d H:i:s', $timestamp)。不过要注意精度丢失的问题,但毫秒部分用户可能不需要,所以没问题。 然后,用户可能遇到的问题包括时区处理、是否需要包含毫秒部分(但用户要求的格式没有毫秒),所以转换的时候要忽略毫秒部分。另外,有些语言处理时间戳的时候是否自动处理闰秒之类的,但一般情况可能不需要考虑这些细节。 还有可能的错误点,比如时间戳是字符串类型的话需要先转成整数,或者在除法的时候处理整数浮点数的问题。比如在Python中,用//整除符号还是普通的除法,可能会影响结果,不过毫秒级除以1000取整应该没问题。 另外,示例可能会帮助用户理解,比如给出一个具体的毫秒数,然后展示转换后的结果,比如1672531200000对应2023-01-01 00:00:00 UTC。 最后,总结步骤的话应该是:1. 确认时间戳毫秒级13位),2. 转换为秒级(除以1000),3. 使用时区相关的函数转换为期时间对象,4. 格式化为字符串。 可能还需要提醒用户注意时区的问题,确保转换后的时间是UTC还是本地时间,根据他们的需求调整代码。比如在JavaScript中使用getUTC系列函数还是本地函数。 总之,需要分步骤解释,覆盖主要编程语言,注意时区时间戳长度的问题,给出示例代码,并指出常见问题点,比如除以1000时区处理。</think>将毫秒级时间戳13位数字)转换为 `xxxx-xx-xx HH:MM:ss` 格式的步骤如下: --- ### **1. 基本原理** - **时间戳定义**:毫秒级时间戳表示从 **1970年1月1 00:00:00 UTC** 到目标时间的毫秒数。 - **关键操作**: 1. **截断毫秒**:将13时间戳转换为秒级(除以1000取整)。 2. **时区处理**:根据需求选择UTC时间或本地时间。 --- ### **2. 通用步骤** 1. **验证输入**:确保时间戳13位数字(若为10位需先乘以1000)。 2. **转换为秒**:`时间戳 / 1000` 3. **格式化期**:使用编程语言的期库处理秒级时间戳--- ### **3. 各语言实现** #### **Python** ```python import datetime timestamp = 1672531200000 # 示例时间戳 seconds = timestamp // 1000 # 取整避免浮点数 dt = datetime.datetime.fromtimestamp(seconds) # 本地时间 # dt = datetime.datetime.utcfromtimestamp(seconds) # UTC时间 formatted = dt.strftime("%Y-%m-%d %H:%M:%S") print(formatted) # 输出:2023-01-01 00:00:00(假设时区为UTC+0) ``` #### **JavaScript** ```javascript const timestamp = 1672531200000; const date = new Date(timestamp); // 本地时间格式 const formatted = date.toLocaleString('zh-CN', { year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit' }).replace(/\//g, '-'); console.log(formatted); // 输出:2023-01-01 08:00:00(假设时区为UTC+8) ``` #### **Java** ```java import java.time.Instant; import java.time.ZoneId; import java.time.format.DateTimeFormatter; long timestamp = 1672531200000L; Instant instant = Instant.ofEpochMilli(timestamp); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") .withZone(ZoneId.systemDefault()); // 本地时区 String formatted = formatter.format(instant); System.out.println(formatted); // 输出取决于时区 ``` #### **PHP** ```php $timestamp = 1672531200000; $seconds = intval($timestamp / 1000); $formatted = date("Y-m-d H:i:s", $seconds); echo $formatted; // 输出:2023-01-01 00:00:00(默认时区配置) ``` --- ### **4. 注意事项** 1. **时区差异**:代码需明确使用本地时间(如`fromtimestamp`)或UTC时间(如`utcfromtimestamp`)。 2. **边界值**:验证时间戳是否在合理范围内(如1970年之前可能报错)。 3. **编程语言差异**:JavaScript的`Date`直接支持毫秒,其他语言需手动转换。 --- ### **5. 在线工具** 若需快速验证,可使用: - [Epoch Converter](https://www.epochconverter.com/) - [Unix Timestamp Tool](https://unixtimestamp.com/) 通过上述方法,可准确将毫秒级时间戳转换为易读的期时间格式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值