java 如何把string 型2012-01-01截取成年月日

java 如何把string 型2012-01-01截取成年月日,第1张

使用simpldedateformat 和calendar 进行转化,

解决的思路是,

1、先把字符串根据格式使用simpleDateFormat

2、把你要解析的字符串,通过simpleDateFormat的工具转成Date类型的

3、得到calendar日历类,并把转换后的Date放入日历类中。

4、通过calendar类中的方法可以获取到传入的Date的年月日。

ps:由于月份是从0开始计算的,所以在获取的时候要+1

SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");

try {

Date date = sfparse("2015-12-01");

Calendar calendar = CalendargetInstance();

calendarsetTime(date);

Systemoutprintln(calendarget(CalendarYEAR));

Systemoutprintln(calendarget(CalendarMONTH) + 1);

Systemoutprintln(calendarget(CalendarDAY_OF_MONTH));

} catch (ParseException e) {

eprintStackTrace();

}

其实系统默认的都是毫秒数的时间戳, 所以你想要的2017-01-16 17:00:00 不是提取的, 而是格式化的

new SimpleDateFormat("yyyy-MM-dd HH:00:00")format(SystemcurrentTimeMillis());

第一种方法:

package cnywtest;

import javatextSimpleDateFormat;

import javautilDate;

public class DateTest {

public static void main(String[] args){

Date today = new Date();

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

formatformat(today);

/输入日期/

Systemoutprintln(formatformat(today));

String datetime = formatformat(today);

//输入年

String year = datetimesubstring(0, datetimeindexOf("-"));

Systemoutprintln(year);

//输出月

String month = datetimesubstring(datetimeindexOf("-")+1, datetimelastIndexOf("-"));

Systemoutprintln(month);

//输出日

String day = datetimesubstring(datetimelastIndexOf("-")+1, datetimelength());

Systemoutprintln(day);

}

}

第二种方法:

Date today = new Date();

long time = todaygetTime();

Calendar calendar = CalendargetInstance();

calendarsetTimeInMillis(time);

//输出年

Systemoutprintln(calendarget(CalendarYEAR));

//输出月 :由于月份是从0开始的所以要加上1

Systemoutprintln(calendarget(CalendarMONTH+1));

//输出日

Systemoutprintln(calendarget(CalendarDAY_OF_MONTH));

希望能够帮助你解决问题

package Test20201227;

import javatextSimpleDateFormat;

import javautilDate;

public class Test02 {

public static void main(String[] args) {

//新建日期对象  并设置时间为实时

Date date = new Date(SystemcurrentTimeMillis());

//设置日期格式

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

//打印格式化以后的日期

Systemoutprintln(sdfformat(date));

}

}

package util;

import javamathBigDecimal;

import javatextParseException;

import javatextSimpleDateFormat;

import javautilCalendar;

import javautilDate;

/

获取系统时间

/

public class DateUtil {

/ 日志对象 /

// private static Logger logger = LoggergetLogger(SystemUtilclass);

/ 获取年份 /

public static final int YEAR = 1;

/ 获取年月 /

public static final int YEARMONTH = 2;

/ 获取年月日 /

public static final int YEARMONTHDAY = 3;

/ 获取年月日,小时 /

public static final int YMD_HOUR = 4;

/ 获取年月日,小时,分钟 /

public static final int YMD_HOURMINUTE = 5;

/ 获取年月日,时分秒 /

public static final int FULL = 6;

/ 获取年月日时分秒 格式:yyyyMMddHHmmss /

public static final int UTILTIME = 7;

/

根据指定时间格式类型得到当前时间

@param type

时间类型

@return String 字符串时间

/

public static synchronized String getCurrentTime(int type) {

String format = getFormat(type);

SimpleDateFormat timeformat = new SimpleDateFormat(format);

Date date = new Date();

return timeformatformat(date);

}

/

返回当前系统时间的年月日

@return

/

public static synchronized String getCurrentTime() {

SimpleDateFormat timeformat = new SimpleDateFormat("yyyy-MM-dd");

Date date = new Date();

return timeformatformat(date);

}

/

根据参数格式,格式化当前日期

@param format

@return

/

public static synchronized String getDateString(String format) {

SimpleDateFormat timeformat = new SimpleDateFormat(format);

Date date = new Date();

return timeformatformat(date);

}

/

根据指定时间格式类型,格式化时间格式

@param type

时间格式类型

@return

/

private static String getFormat(int type) {

String format = "";

if (type == 1) {

format = "yyyy";

} else if (type == 2) {

format = "yyyy-MM";

} else if (type == 3) {

format = "yyyy-MM-dd";

} else if (type == 4) {

format = "yyyy-MM-dd HH";

} else if (type == 5) {

format = "yyyy-MM-dd HH:mm";

} else if (type == 6) {

format = "yyyy-MM-dd HH:mm:ss";

} else if (type == 7) {

format = "yyyyMMddHHmmss";

} else {

throw new RuntimeException("日期格式参数错误");

}

return format;

}

public static int getYear(String dateString) {

SimpleDateFormat dd = new SimpleDateFormat("yyyy-MM-dd");

Date date = null;

try {

date = ddparse(dateString);

Calendar cal = CalendargetInstance();

calsetTime(date);

return calget(CalendarYEAR);

} catch (Exception e) {

throw new RuntimeException(e);

}

}

public static int getMonth(String dateString) {

SimpleDateFormat dd = new SimpleDateFormat("yyyy-MM-dd");

Date date = null;

try {

date = ddparse(dateString);

Calendar cal = CalendargetInstance();

calsetTime(date);

return calget(CalendarMONTH)+1;

} catch (Exception e) {

throw new RuntimeException(e);

}

}

public static int getDay(String dateString) {

SimpleDateFormat dd = new SimpleDateFormat("yyyy-MM-dd");

Date date = null;

try {

date = ddparse(dateString);

Calendar cal = CalendargetInstance();

calsetTime(date);

return calget(CalendarDAY_OF_MONTH);

} catch (Exception e) {

throw new RuntimeException(e);

}

}

public static Date StringToDate(String dateStr, String formatStr) {

SimpleDateFormat dd = new SimpleDateFormat(formatStr);

Date date = null;

try {

date = ddparse(dateStr);

} catch (ParseException e) {

eprintStackTrace();

}

return date;

}

/

当前日期和参数日期距离的小时数 日期格式:yyyy-MM-dd HH:mm:ss

@param date

@return

/

public static double getHours(String date) {

SimpleDateFormat timeformat = new SimpleDateFormat(

"yyyy-MM-dd HH:mm:ss");

try {

Date d = new Date();

Date d1 = timeformatparse(date);

long temp = dgetTime() - d1getTime();

double f = temp / 3600000d;

BigDecimal b = new BigDecimal(f);

double f1 = bsetScale(2, BigDecimalROUND_HALF_UP)doubleValue();

return f1;

} catch (Exception e) {

eprintStackTrace();

throw new RuntimeException(e);

}

}

public static void main(String a[]) {

try {

int aa = getYear("2012-01-08");

Systemoutprintln(aa);

} catch (Exception e) {

eprintStackTrace();

}

}

}

有两种方法:

方法一:用javautilDate类来实现,并结合javatextDateFormat类来实现时间的格式化,看下面代码:

import javautil;

import javatext;

//以下默认时间日期显示方式都是汉语语言方式

//一般语言就默认汉语就可以了,时间日期的格式默认为MEDIUM风格,比如:2008-6-16 20:54:53

//以下显示的日期时间都是再Date类的基础上的来的,还可以利用Calendar类来实现见类TestDate2java

public class TestDate {

public static void main(String[] args) {

Date now = new Date();

Calendar cal = CalendargetInstance();

DateFormat d1 = DateFormatgetDateInstance(); //默认语言(汉语)下的默认风格(MEDIUM风格,比如:2008-6-16 20:54:53)

String str1 = d1format(now);

DateFormat d2 = DateFormatgetDateTimeInstance();

String str2 = d2format(now);

DateFormat d3 = DateFormatgetTimeInstance();

String str3 = d3format(now);

DateFormat d4 = DateFormatgetInstance(); //使用SHORT风格显示日期和时间

String str4 = d4format(now);

DateFormat d5 = DateFormatgetDateTimeInstance(DateFormatFULL,DateFormatFULL); //显示日期,周,时间(精确到秒)

String str5 = d5format(now);

DateFormat d6 = DateFormatgetDateTimeInstance(DateFormatLONG,DateFormatLONG); //显示日期。时间(精确到秒)

String str6 = d6format(now);

DateFormat d7 = DateFormatgetDateTimeInstance(DateFormatSHORT,DateFormatSHORT); //显示日期,时间(精确到分)

String str7 = d7format(now);

DateFormat d8 = DateFormatgetDateTimeInstance(DateFormatMEDIUM,DateFormatMEDIUM); //显示日期,时间(精确到分)

String str8 = d8format(now);//与SHORT风格相比,这种方式最好用

Systemoutprintln("用Date方式显示时间: " + now);//此方法显示的结果和CalendargetInstance()getTime()一样

Systemoutprintln("用DateFormatgetDateInstance()格式化时间后为:" + str1);

Systemoutprintln("用DateFormatgetDateTimeInstance()格式化时间后为:" + str2);

Systemoutprintln("用DateFormatgetTimeInstance()格式化时间后为:" + str3);

Systemoutprintln("用DateFormatgetInstance()格式化时间后为:" + str4);

Systemoutprintln("用DateFormatgetDateTimeInstance(DateFormatFULL,DateFormatFULL)格式化时间后为:" + str5);

Systemoutprintln("用DateFormatgetDateTimeInstance(DateFormatLONG,DateFormatLONG)格式化时间后为:" + str6);

Systemoutprintln("用DateFormatgetDateTimeInstance(DateFormatSHORT,DateFormatSHORT)格式化时间后为:" + str7);

Systemoutprintln("用DateFormatgetDateTimeInstance(DateFormatMEDIUM,DateFormatMEDIUM)格式化时间后为:" + str8);

}

}

运行结果:

用Date方式显示时间: Mon Jun 16 20:54:53 CST 2008

用DateFormatgetDateInstance()格式化时间后为:2008-6-16

用DateFormatgetDateTimeInstance()格式化时间后为:2008-6-16 20:54:53

用DateFormatgetTimeInstance()格式化时间后为:20:54:53

用DateFormatgetInstance()格式化时间后为:08-6-16 下午8:54

用DateFormatgetDateTimeInstance(DateFormatFULL,DateFormatFULL)格式化时间后为

:2008年6月16日 星期一 下午08时54分53秒 CST

用DateFormatgetDateTimeInstance(DateFormatLONG,DateFormatLONG)格式化时间后为

:2008年6月16日 下午08时54分53秒

用DateFormatgetDateTimeInstance(DateFormatSHORT,DateFormatSHORT)格式化时间后

为:08-6-16 下午8:54

用DateFormatgetDateTimeInstance(DateFormatMEDIUM,DateFormatMEDIUM)格式化时间

后为:2008-6-16 20:54:53

方法二:用javautilCalendar类来实现,看下面:

import javautil;

import javatext;

//以下是利用Calendar类来实现日期时间的,和Date类相比较比较简单

public class TestDate2 {

public static void main(String[] args) {

Calendar ca = CalendargetInstance();

int year = caget(CalendarYEAR);//获取年份

int month=caget(CalendarMONTH);//获取月份

int day=caget(CalendarDATE);//获取日

int minute=caget(CalendarMINUTE);//分

int hour=caget(CalendarHOUR);//小时

int second=caget(CalendarSECOND);//秒

int WeekOfYear = caget(CalendarDAY_OF_WEEK);

Systemoutprintln("用CalendargetInstance()getTime()方式显示时间: " + cagetTime());

Systemoutprintln("用Calendar获得日期是:" + year +"年"+ month +"月"+ day + "日");

Systemoutprintln("用Calendar获得时间是:" + hour +"时"+ minute +"分"+ second +"秒");

Systemoutprintln(WeekOfYear);//显示今天是一周的第几天(我做的这个例子正好是周二,故结果显示2,如果你再周6运行,那么显示6)

}

}

运行结果是:

用CalendargetInstance()getTime()方式显示时间: Mon Jun 16 21:54:21 CST 2008

用Calendar获得日期是:2008年5月16日

用Calendar获得时间是:9时54分21秒

2

总结:中的来说,方法二是最方便的,方法一显得分笨拙,不过看个人喜欢了。

还有一种方法利用SystemcurrentTimeMillis()也可以。

1、使用new Date()获取当前日期,new Date()getTime()获取当前毫秒数

2、计算公式,等于获取的当前日期减去或者加上一天的毫秒数。一天的毫秒数的计算公式:24小时60分钟60秒1000毫秒,也是86400000毫秒。

举例:

Date curDate = new Date();

var preDate = new Date(curDategetTime() - 2460601000); //前一天

var nextDate = new Date(curDategetTime() + 2460601000); //后一天

以下使用后台输出表示。

扩展资料

var myDate = new Date();

myDategetYear();        //获取当前年份(2位)

myDategetFullYear();    //获取完整的年份(4位,1970-)

myDategetMonth();       //获取当前月份(0-11,0代表1月)

myDategetDate();        //获取当前日(1-31)

myDategetDay();         //获取当前星期X(0-6,0代表星期天)

myDategetTime();        //获取当前时间(从197011开始的毫秒数)

myDategetHours();       //获取当前小时数(0-23)

myDategetMinutes();     //获取当前分钟数(0-59)

myDategetSeconds();     //获取当前秒数(0-59)

myDategetMilliseconds();    //获取当前毫秒数(0-999)

myDatetoLocaleDateString();     //获取当前日期

var mytime=myDatetoLocaleTimeString();     //获取当前时间

myDatetoLocaleString( );        //获取日期与时间

DateprototypeisLeapYear 判断闰年

DateprototypeFormat 日期格式化

DateprototypeDateAdd 日期计算

DateprototypeDateDiff 比较日期差

DateprototypetoString 日期转字符串

DateprototypetoArray 日期分割为数组

DateprototypeDatePart 取日期的部分信息

DateprototypeMaxDayOfDate 取日期所在月的最大天数

DateprototypeWeekNumOfYear 判断日期所在年的第几周

StringToDate 字符串转日期型

IsValidDate 验证日期有效性

CheckDateTime 完整日期时间检查

daysBetween 日期天数差

以上就是关于java 如何把string 型2012-01-01截取成年月日全部的内容,包括:java 如何把string 型2012-01-01截取成年月日、Java获取时间戳精确到年月日时、java 如何从Long型的时间中取得年月日等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9275456.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存