java JDK时间 7时间 SimpleDateFormat


您好!以下是Java JDK 7中使用SimpleDateFormat格式化日期和时间的示例代码:

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

public class Example {
    public static void main(String[] args) {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date now = new Date();
        String formattedDate = dateFormat.format(now);
        System.out.println("Formatted date and time: " + formattedDate);
    }
}

在上面的示例中,我们使用了SimpleDateFormat类来格式化当前日期和时间。构造函数中的参数是格式化日期和时间所需的模式字符串,其中yyyy代表四位数的年份,MM代表两位数的月份,dd代表两位数的日期,HH代表24小时制下的小时数,mm代表分钟数,ss代表秒数。

format()方法中,我们传入一个Date对象,该对象包含当前日期和时间的信息。该方法将返回格式化后的日期和时间的字符串。

最后,我们将格式化后的日期和时间打印到控制台上。如果您希望在其他地方使用该字符串,可以将其存储在一个变量中。

以下是一些常见的日期和时间格式化模式字符串:

  • yyyy:四位数的年份,例如:2023
  • yy:两位数的年份,例如:23
  • MM:两位数的月份,例如:01表示一月,12表示十二月
  • MMM:缩写的月份名称,例如:Jan表示一月,Dec表示十二月
  • MMMM:完整的月份名称,例如:January表示一月,December表示十二月
  • dd:两位数的日期,例如:01表示一个月的第一天,31表示一个月的最后一天
  • EEE:缩写的星期几名称,例如:Mon表示星期一,Fri表示星期五
  • EEEE:完整的星期几名称,例如:Monday表示星期一,Friday表示星期五
  • HH:24小时制下的小时数,例如:00表示午夜,23表示晚上11点
  • hh:12小时制下的小时数,例如:01表示上午1点,12表示下午12点
  • a:上午或下午的标识符,例如:AM或PM
  • mm:分钟数,例如:00表示整点,59表示前一分钟
  • ss:秒数,例如:00表示整秒,59表示前一秒
  • S:毫秒数,例如:001表示一毫秒,999表示九百九十九毫秒

注意,日期和时间格式化模式字符串是区分大小写的。您可以根据自己的需要自由组合这些格式化模式字符串。另外,SimpleDateFormat类还支持一些特殊字符,例如'"\等,用于转义特殊字符或添加固定文本。详细的信息可以参考Java官方文档。

以下是一些使用SimpleDateFormat类格式化日期和时间的示例:

  1. 格式化当前日期和时间为"yyyy-MM-dd HH:mm:ss"格式的字符串:
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date now = new Date();
String formattedDate = dateFormat.format(now);
System.out.println(formattedDate);

输出结果可能类似于:2023-05-10 14:30:25。

  1. 格式化指定日期为"dd/MM/yyyy"格式的字符串:
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
Date date = new Date(1234567890000L); // 2009-02-14 02:31:30
String formattedDate = dateFormat.format(date);
System.out.println(formattedDate);

输出结果可能类似于:14/02/2009。

  1. 格式化当前时间为"HH:mm:ss a"格式的字符串:
SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss a");
Date now = new Date();
String formattedDate = dateFormat.format(now);
System.out.println(formattedDate);

输出结果可能类似于:02:30:25 下午。

  1. 格式化当前日期和时间为"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"格式的字符串(ISO 8601标准格式):
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
dateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); // 设置时区为UTC
Date now = new Date();
String formattedDate = dateFormat.format(now);
System.out.println(formattedDate);

输出结果可能类似于:2023-05-10T06:30:25.123Z。

这些示例仅供参考,您可以根据自己的需要调整格式化模式字符串和日期时间值。

  1. 解析字符串为日期对象:
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String dateString = "2023-05-10";
try {
    Date date = dateFormat.parse(dateString);
    System.out.println(date);
} catch (ParseException e) {
    e.printStackTrace();
}

输出结果可能类似于:Mon May 10 00:00:00 CST 2023。

  1. 解析字符串为日期时间对象:
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateTimeString = "2023-05-10 14:30:25";
try {
    Date dateTime = dateFormat.parse(dateTimeString);
    System.out.println(dateTime);
} catch (ParseException e) {
    e.printStackTrace();
}

输出结果可能类似于:Mon May 10 14:30:25 CST 2023。

  1. 格式化日期时间为指定时区的字符串:
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
dateFormat.setTimeZone(TimeZone.getTimeZone("America/New_York")); // 设置时区为纽约
Date dateTime = new Date();
String formattedDateTime = dateFormat.format(dateTime);
System.out.println(formattedDateTime);

输出结果可能类似于:2023-05-10 02:30:25。

  1. 将字符串中的日期时间转换为指定时区的日期时间:
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
dateFormat.setTimeZone(TimeZone.getTimeZone("America/New_York")); // 设置目标时区为纽约
String dateTimeString = "2023-05-10 14:30:25";
dateFormat.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai")); // 设置源时区为上海
try {
    Date dateTime = dateFormat.parse(dateTimeString);
    dateFormat.setTimeZone(TimeZone.getTimeZone("America/New_York")); // 设置时区为纽约
    String formattedDateTime = dateFormat.format(dateTime);
    System.out.println(formattedDateTime);
} catch (ParseException e) {
    e.printStackTrace();
}

输出结果可能类似于:2023-05-10 02:30:25。

这些示例展示了SimpleDateFormat类在日期时间格式化和解析方面的基本用法,您可以根据需要进一步探索这个类的其他方法和特性。

  1. 使用SimpleDateFormat类格式化数字和货币:
DecimalFormat decimalFormat = new DecimalFormat("#,##0.00");
double number = 1234567.89;
String formattedNumber = decimalFormat.format(number);
System.out.println(formattedNumber);

NumberFormat currencyFormat = NumberFormat.getCurrencyInstance(Locale.US);
double amount = 1234.56;
String formattedAmount = currencyFormat.format(amount);
System.out.println(formattedAmount);

输出结果可能类似于:1,234,567.89 和 $1,234.56。

  1. 使用SimpleDateFormat类解析数字和货币:
DecimalFormat decimalFormat = new DecimalFormat("#,##0.00");
String numberString = "1,234,567.89";
try {
    double number = decimalFormat.parse(numberString).doubleValue();
    System.out.println(number);
} catch (ParseException e) {
    e.printStackTrace();
}

NumberFormat currencyFormat = NumberFormat.getCurrencyInstance(Locale.US);
String amountString = "$1,234.56";
try {
    double amount = currencyFormat.parse(amountString).doubleValue();
    System.out.println(amount);
} catch (ParseException e) {
    e.printStackTrace();
}

输出结果可能类似于:1234567.89 和 1234.56。

这些示例展示了SimpleDateFormat类在数字和货币格式化和解析方面的基本用法,您可以根据需要进一步探索这个类的其他方法和特性。

  1. 格式化日期为指定的字符串样式:
Date date = new Date();
String pattern = "dd MMM yyyy HH:mm:ss zzz";
SimpleDateFormat dateFormat = new SimpleDateFormat(pattern, Locale.US);
String formattedDate = dateFormat.format(date);
System.out.println(formattedDate);

输出结果可能类似于:10 May 2023 09:26:42 CST。

  1. 使用SimpleDateFormat类进行本地化日期时间格式化:
Date date = new Date();
int style = DateFormat.FULL;
DateFormat dateFormat = DateFormat.getDateTimeInstance(style, style, Locale.CHINA);
String formattedDateTime = dateFormat.format(date);
System.out.println(formattedDateTime);

输出结果可能类似于:2023年5月10日 星期三 下午09时33分28秒。

  1. 使用SimpleDateFormat类进行日期时间解析并忽略输入字符串中的非数字字符:
String dateTimeString = "2023-05-10T14:30:25.000Z";
String pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);
dateFormat.setLenient(false); // 设置为非宽松模式,避免解析错误的日期时间
try {
    Date dateTime = dateFormat.parse(dateTimeString.replaceAll("[^\\d.]", ""));
    System.out.println(dateTime);
} catch (ParseException e) {
    e.printStackTrace();
}

输出结果可能类似于:Mon May 10 22:30:25 CST 2023。

这些示例展示了SimpleDateFormat类在日期时间格式化和解析方面的一些高级用法,包括自定义格式、本地化格式、宽松解析等。在实际应用中,您可以根据需要选择适合自己的方式来使用这个类。

  1. 处理日期的偏移量,例如时区偏移:
Date date = new Date();
String pattern = "yyyy-MM-dd HH:mm:ss Z";
SimpleDateFormat dateFormat = new SimpleDateFormat(pattern, Locale.US);
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT+8")); // 设置为东八区
String formattedDate = dateFormat.format(date);
System.out.println(formattedDate);

输出结果可能类似于:2023-05-10 10:08:05 +0800。

  1. 使用SimpleDateFormat类自定义解析和格式化规则:
String dateString = "20230510";
String pattern = "yyyyMMdd";
SimpleDateFormat dateFormat = new SimpleDateFormat(pattern, Locale.US);
try {
    Date date = dateFormat.parse(dateString);
    System.out.println(date);
} catch (ParseException e) {
    e.printStackTrace();
}

pattern = "MMM d, yyyy";
dateFormat.applyPattern(pattern);
String formattedDate = dateFormat.format(new Date());
System.out.println(formattedDate);

输出结果可能类似于:Wed May 10 00:00:00 CST 2023 和 May 10, 2023。

这些示例展示了SimpleDateFormat类的一些自定义规则的用法,包括设置日期格式、解析和格式化日期、修改已有格式等。这些功能可以帮助您在特定的场景下灵活地使用日期格式。


原文链接:codingdict.net