Android 时间格式转换为时间戳

在Android开发过程中,我们经常需要将各种时间格式转换为时间戳(Unix时间戳),以便进行时间比较、存储和计算。时间戳是一种以秒为单位的表示方式,从1970年1月1日(UTC)开始计算。

时间格式

常见的时间格式有以下几种:

  1. 标准时间格式:yyyy-MM-dd HH:mm:ss
  2. 长日期格式:yyyy年MM月dd日 HH时mm分ss秒
  3. 自定义时间格式:例如 dd/MM/yyyy HH:mm

转换流程

下面是一个将时间格式转换为时间戳的流程图:

flowchart TD
    A[开始] --> B{输入时间}
    B --> C[选择时间格式]
    C -->|标准时间格式| D[解析时间]
    C -->|长日期格式| E[解析时间]
    C -->|自定义时间格式| F[解析时间]
    D --> G[转换为时间戳]
    E --> G
    F --> G
    G --> H[结束]

代码示例

下面是一个将标准时间格式转换为时间戳的示例代码:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class TimeConverter {
    public static void main(String[] args) {
        String timeStr = "2024-03-01 12:34:56";
        long timestamp = convertToTimestamp(timeStr);
        System.out.println("时间戳:" + timestamp);
    }

    public static long convertToTimestamp(String timeStr) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            Date date = sdf.parse(timeStr);
            return date.getTime() / 1000;
        } catch (ParseException e) {
            e.printStackTrace();
            return -1;
        }
    }
}

解析长日期格式

如果输入的时间格式是长日期格式,例如 2024年03月01日 12时34分56秒,我们可以使用以下代码进行解析:

public static long convertLongDateFormatToTimestamp(String timeStr) {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
    try {
        Date date = sdf.parse(timeStr);
        return date.getTime() / 1000;
    } catch (ParseException e) {
        e.printStackTrace();
        return -1;
    }
}

解析自定义时间格式

对于自定义时间格式,例如 dd/MM/yyyy HH:mm,我们只需要修改SimpleDateFormat的格式字符串即可:

public static long convertCustomFormatToTimestamp(String timeStr) {
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm");
    try {
        Date date = sdf.parse(timeStr);
        return date.getTime() / 1000;
    } catch (ParseException e) {
        e.printStackTrace();
        return -1;
    }
}

结语

通过上述代码示例,我们可以看到,无论输入的时间格式是什么,我们都可以使用SimpleDateFormat类进行解析,然后将其转换为时间戳。这种方法简单、高效,适用于各种时间格式的转换需求。在实际开发中,我们可以根据具体需求选择合适的时间格式,然后使用相应的解析方法进行转换。