首页 > 其他分享 >前端小功能开发过程小结

前端小功能开发过程小结

时间:2022-10-24 18:31:20浏览次数:95  
标签:java LocalDate 前端 util date 开发 Date Instant 小结

 

做select的时候,页面要求为:载入默认选项框为空白,点击下拉框显示正常选项。
有两种办法,一种纯css实现,一种借助js实现。
JS:

<body onl oad="load()">  
<select id="abc" >
<option >1</option>
<option >2</option>
<option >3</option>
<option >4</option>
</select>
</body>

控制用的js:

function load() {
var x = document.getElementById("abc");
x.selectedIndex = -1;
}
</script>

纯css的方法:

<option style="display:none" value="" selected></option>


js格式化日期。有一点不是很理解,jquery为什么没有集成类似java的SimpleDateFormatter,或者

org.apache.commons.lang3.time.DateFormatUtils#format(java.util.Date, java.lang.String)   
/**
* <p>Formats a date/time into a specific pattern.</p>
*
* @param date the date to format, not null
* @param pattern the pattern to use to format the date, not null
* @return the formatted date
*/
public static String format(final Date date, final String pattern) {
return format(date, pattern, null, null);
}

 

<script type="text/javascript">
function formatDateToYYYY_MM_DD(currentDate) {
return currentDate.getFullYear() + '-' + (currentDate.getMonth() + 1) + '-' + currentDate.getDate()
}
function formatDateToYYYY_MM_DD_HH_MIN(currentDate) {
return currentDate.getFullYear() + '-'
+ (currentDate.getMonth() + 1)
+ '-' + currentDate.getDate()
+ " " + currentDate.getHours()
+ ":" + currentDate.getMinutes();
}
</script>

 

<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.6</version>
</dependency>

 

You can: .slice() and .split()

<script type="text/javascript">
var d = "2010-10-30T00:00:00+05:30".slice(0, 10).split('-');
console.log(d[1] + "/" + d[2] + "/" + d[0]);// 10/30/2010

...or pass your string into the Date Object:

var d = new Date("2010-10-30T00:00:00+05:30");
//from here you can extract the desired using the following methods:
console.log(d.getMonth() + 1 + "/" + d.getDate() + "/" + d.getFullYear());// 10/30/2010

Note that getMonth() returns the month number zero based (0-11) therefore a +1 is needed. java.uti.Date中的month也是0-11

​https://stackoverflow.com/questions/11591854/format-date-to-mm-dd-yyyy-in-javascript​

jQuery时间戳转换普通日期格式:
找了下网上的都是会遇到少个0的时候,所以自己弄了个不会出现单位的jquery代码

function add0(m) {
return m < 10 ? '0' + m : m
}
function format(timestamp) {
//timestamp是整数,否则要parseInt转换,不会出现少个0的情况

var time = new Date(timestamp);
var year = time.getFullYear();
var month = time.getMonth() + 1;
var date = time.getDate();
var hours = time.getHours();
var minutes = time.getMinutes();
var seconds = time.getSeconds();
return year + '-' + add0(month) + '-' + add0(date) + ' ' + add0(hours) + ':' + add0(minutes) + ':' + add0(seconds);
}
</script>

时间和时间戳互转http://www.jb51.net/article/44849.htm

 

 

时间选择控件:
https://github.com/smalot/bootstrap-datetimepicker 【此次使用这个,is a fork】

bootstrap-datepicker
Bootstrap-datepicker provides a flexible datepicker widget in the Bootstrap style.

​https://github.com/uxsolutions/bootstrap-datepicker​

Requirements
Bootstrap 2.0.4+
jQuery 1.7.1+
These are the specific versions bootstrap-datepicker is tested against (js files) and built against (css files). Use other versions at your own risk.

Dependencies
Requires bootstrap’s dropdown component (dropdowns.less) for some styles, and bootstrap’s sprites (sprites.less and associated images) for arrows.

A standalone .css file (including necessary dropdown styles and alternative, text-based arrows) can be generated by running build/build_standalone.less through the lessc compiler:

$ lessc build/build_standalone.less datepicker.css
Usage
Call the datepicker via javascript:

$('.datepicker').datepicker();

​https://bootstrap-datepicker.readthedocs.io/en/stable/​​​

时间选择控件2
https://github.com/Eonasdan/bootstrap-datetimepicker

http://momentjs.com/

Moment.js 2.18.1
Parse, validate, manipulate, and display dates and times in JavaScript

bootstrap渲染的控件:
​​​http://getbootstrap.com/components/#input-groups​

bootstrap常用样式
​​​http://getbootstrap.com/examples/theme/#​​​
 

 

 

参考:

Java 8新增了​​LocalDate​​​和​​LocalTime​​​接口,为什么要搞一套全新的处理日期和时间的API?因为旧的​​java.util.Date​​实在是太难用了。

​java.util.Date​​​月份从​​0​​​开始,一月是​​0​​​,十二月是​​11​​​,变态吧!​​java.time.LocalDate​​​月份和星期都改成了​​enum​​,就不可能再用错了。

java.util.Date​SimpleDateFormatter​都不是线程安全的,而​​LocalDate​​​和​​LocalTime​​​和最基本的​​String​​一样,是不变类型,不但线程安全,而且不能修改。

​java.util.Date​​​是一个“万能接口”,它包含日期、时间,还有毫秒数,如果你只想用​​java.util.Date​​​存储日期,或者只存储时间,那么,只有你知道哪些部分的数据是有用的,哪些部分的数据是不能用的。在新的Java 8中,日期和时间被明确划分为​​LocalDate​​​和​​LocalTime​​​,​​LocalDate​​​无法包含时间,​​LocalTime​​​无法包含日期。当然,​​LocalDateTime​​才能同时包含日期和时间。

新接口更好用的原因是考虑到了日期时间的操作,经常发生往前推或往后推几天的情况。用​​java.util.Date​​​配合​​Calendar​​要写好多代码,而且一般的开发人员还不一定能写对。

LocalDate

看看新的​​LocalDate​​怎么用:

// 取当前日期:
LocalDate today = LocalDate.now(); // -> 2014-12-24
// 根据年月日取日期,12月就是12:
LocalDate crischristmas = LocalDate.of(2014, 12, 25); // -> 2014-12-25
// 根据字符串取:
LocalDate endOfFeb = LocalDate.parse("2014-02-28"); // 严格按照ISO yyyy-MM-dd验证,02写成2都不行,当然也有一个重载方法允许自己定义格式
LocalDate.parse("2014-02-29"); // 无效日期无法通过:DateTimeParseException: Invalid date

日期转换经常遇到,比如:

// 取本月第1天:
LocalDate firstDayOfThisMonth = today.with(TemporalAdjusters.firstDayOfMonth()); // 2014-12-01
// 取本月第2天:
LocalDate secondDayOfThisMonth = today.withDayOfMonth(2); // 2014-12-02
// 取本月最后一天,再也不用计算是28,29,30还是31:
LocalDate lastDayOfThisMonth = today.with(TemporalAdjusters.lastDayOfMonth()); // 2014-12-31
// 取下一天:
LocalDate firstDayOf2015 = lastDayOfThisMonth.plusDays(1); // 变成了2015-01-01
// 取2015年1月第一个周一,这个计算用Calendar要死掉很多脑细胞:
LocalDate firstMondayOf2015 = LocalDate.parse("2015-01-01").with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY)); // 2015-01-05

LocalTime

​LocalTime​​​只包含时间,以前用​​java.util.Date​​怎么才能只表示时间呢?答案是,假装忽略日期。

​LocalTime​​包含毫秒:

LocalTime now = LocalTime.now(); // 11:09:09.240

你可能想清除毫秒数:

LocalTime now = LocalTime.now().withNano(0)); // 11:09:09

构造时间也很简单:

LocalTime zero = LocalTime.of(0, 0, 0); // 00:00:00
LocalTime mid = LocalTime.parse("12:00:00"); // 12:00:00

时间也是按照ISO格式识别,但可以识别以下3种格式:

  • 12:00
  • 12:01:02
  • 12:01:02.345

JDBC

最新JDBC映射将把数据库的日期类型和Java 8的新类型关联起来:

SQL -> Java
--------------------------
date -> LocalDate
time -> LocalTime
timestamp -> LocalDateTime

再也不会出现映射到​​java.util.Date​​​其中日期或时间某些部分为​​0​​的情况了。

​https://www.liaoxuefeng.com/article/00141939241051502ada88137694b62bfe844cd79e12c32000​

 

Java 8中 java.util.Date 类新增了两个方法,分别是from(Instant instant)和toInstant()方法

// Obtains an instance of Date from an Instant object.
public static Date from(Instant instant) {
try {
return new Date(instant.toEpochMilli());
} catch (ArithmeticException ex) {
throw new IllegalArgumentException(ex);
}
}

// Converts this Date object to an Instant.
public Instant toInstant() {
return Instant.ofEpochMilli(getTime());
}

 

所谓的Instant类代表的是某个时间(有点象java.util.Date),它是精确到纳秒的(而不是象旧版本的Date精确到毫秒)。
如果使用纳秒去表示一个时间则原来的使用一位Long类型是不足够的,需要占用更多一点的存储空间,然而实际上其内部是由两个Long字段组成,
第一个部分保存的是自标准Java计算时代(就是1970年1月1日开始)到现在的秒数,
第二部分保存的是纳秒数(永远不会超过999,999,999)。

这两个方法使我们可以方便的实现将旧的日期类转换为新的日期类,具体思路都是

通过Instant当中介,然后通过Instant来创建LocalDateTime(这个类可以很容易获取LocalDate和LocalTime),
新的日期类转旧的也是如此,将新的先转成LocalDateTime,然后获取Instant,接着转成Date,具体实现细节如下:

@Test
public void testInstant() {
//Instant类代表的是某个时间(有点象java.util.Date),它是精确到纳秒的(而不是象旧版本的Date精确到毫秒)
// 其内部是由两个Long字段组成,
// 第一个部分保存的是自标准Java计算时代(就是1970年1月1日开始)到现在的秒数,
// 第二部分保存的是纳秒数(永远不会超过999,999,999)
//以ISO-8601输出
// 国际标准化组织的国际标准ISO 8601是日期和时间的表示方法,全称为《数据存储和交换形式·信息交换·日期和时间的表示方法》
// 年为4位数,月为2位数,月中的日为2位数,例如2004年5月3日可写成2004-05-03或20040503。
// 小时、分和秒都用2位数表示,对UTC时间最后加一个大写字母Z,其他时区用实际时间加时差表示。
// 如UTC时间下午2点30分5秒表示为14:30:05Z或143005Z,
// 当时的北京时间表示为22:30:05+08:00或223005+0800,也可以简化成223005+08。
// 合并表示时,要在时间前面加一大写字母T,
// 如要表示北京时间2004年5月3日下午5点30分8秒,可以写成2004-05-03T17:30:08+08:00或20040503T173008+08。
Instant instant = Instant.now();
System.out.println(instant);//2017-07-23T05:35:04.431Z
//将java.util.Date转换为Instant
Instant fromDate = Instant.ofEpochMilli(new Date().getTime());
System.out.println(fromDate);//2017-07-25T05:42:33.897Z
//从字符串类型中创建Instant类型的时间
instant = Instant.parse("2017-07-23T10:12:35Z");
System.out.println(instant);//2017-07-23T10:12:35Z


}

// 01. java.util.Date --> java.time.LocalDateTime
@Test
public void UDateToLocalDateTime() {
Date date = new Date();
System.out.println("date:" + date);
Instant instant = date.toInstant();
ZoneId zone = ZoneId.systemDefault();
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
System.out.println("localDateTime:" + localDateTime);
}

// 02. java.util.Date --> java.time.LocalDate
@Test
public void UDateToLocalDate() {
Date date = new Date();
System.out.println("date:" + date);
Instant instant = date.toInstant();
ZoneId zone = ZoneId.systemDefault();
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
LocalDate localDate = localDateTime.toLocalDate();
System.out.println("localDate:" + localDate);
}


// 03. java.util.Date --> java.time.LocalTime
@Test
public void UDateToLocalTime() {
Date date = new Date();
System.out.println("date:" + date);

Instant instant = date.toInstant();
ZoneId zone = ZoneId.systemDefault();
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
LocalTime localTime = localDateTime.toLocalTime();
System.out.println("localTime:" + localTime);
}


// 04. java.time.LocalDateTime --> java.util.Date
@Test
public void LocalDateTimeToUdate() {
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println("localDateTime:" + localDateTime);

ZoneId zone = ZoneId.systemDefault();
Instant instant = localDateTime.atZone(zone).toInstant();
Date date = Date.from(instant);
System.out.println("date:" + date);

}


// 05. java.time.LocalDate --> java.util.Date
@Test
public void LocalDateToUdate() {
LocalDate localDate = LocalDate.now();
System.out.println("localDate:" + localDate);

ZoneId zone = ZoneId.systemDefault();
Instant instant = localDate.atStartOfDay().atZone(zone).toInstant();
Date date = Date.from(instant);
System.out.println("date:" + date);

}

// 06. java.time.LocalTime --> java.util.Date
@Test
public void LocalTimeToUdate() {
LocalTime localTime = LocalTime.now();
System.out.println("localTime:" + localTime);

LocalDate localDate = LocalDate.now();
System.out.println("localDate:" + localDate);

LocalDateTime localDateTime = LocalDateTime.of(localDate, localTime);
ZoneId zone = ZoneId.systemDefault();
Instant instant = localDateTime.atZone(zone).toInstant();
Date date = Date.from(instant);
System.out.println("date:" + date);
}

 



标签:java,LocalDate,前端,util,date,开发,Date,Instant,小结
From: https://blog.51cto.com/u_15147537/5790838

相关文章

  • 如何搭建一套学习、开发PostgreSQL的环境
    背景万事开头难,搭建好一套学习、开发PostgreSQL的环境,是重中之重。因为其他平台(Ubuntu,CentOS,MAC)的用户大多数都具备了自行安装数据库的能力,在这里我只写一个面向Wi......
  • 如何搭建一套学习、开发PostgreSQL的环境
    背景万事开头难,搭建好一套学习、开发PostgreSQL的环境,是重中之重。因为其他平台(Ubuntu,CentOS,MAC)的用户大多数都具备了自行安装数据库的能力,在这里我只写一个面向Wi......
  • Eclipse插件RCP桌面应用开发的点点滴滴
    Eclipse插件开发的点点滴滴新公司做的是桌面应用程序,与之前一直在做的web页面,相差甚大。这篇文章是写于2022年10月底,这时在新公司已经入职了快三月。写作目的是:国内对......
  • 开发那些事儿:EasyCVR时间组件报错,是什么原因?
    EasyCVR具备较强的视频能力,可支持海量设备接入、汇聚与管理、视频监控、视频录像、云存储、回放与检索、智能告警、平台级联等功能。平台可支持多协议接入,包括:国标GB/T2818......
  • 手把手带你入门 API 开发
    引言在本文中,您将学习如何使用​​Flask​​​、​​SQLite3​​(轻易数据库)和JSON创建用于数据通信的RESTAPI。本文使用4个最常用的HTTP动词:GET、POST、PUT和DE......
  • OpenSSL库开发:(三)命令行使用
    1、简介OpenSSL是用于传输层安全(TLS)协议(以前称为安全套接字层(SSL)协议)的强大、商业级、功能齐全的开源工具包。协议实现基于全强度通用密码库,也可以单独使用。Op......
  • iOS开发之自定义日历控件
    前言日常开发中经常会遇到日期选择,为了方便使用,简单封装了一个日历控件,在此抛砖引玉供大家参考。效果功能支持单选、区间支持默认选中日期支持限制月份支持过......
  • 前端项目启动报错:config buildwebpack.dev.conf.js
    前端项目启动报错:configbuildwebpack.dev.conf.js我的主页错误展示错误太长,我就不在标题展示了:webpack-dev-server--inline--progress--configbuild/webpack.d......
  • LeaRun低代码开发平台 助推物联网应用快速落地
    当前,物联网技术正在推动人类社会从“信息化”向“智能化”转变,促进信息科技与产业发生巨大变化。但目前的实际情况来看,物联网的终端设备类型多、数量大,安装运维成本高、工......
  • 行为驱动开发Behaviour Driven Development
    BDD(​​BehaviourDrivenDevelopement​​​)最重要的基础概念是业务化的“Story”,缘于一个很显而易见的原因——“软件开发是要服务于业务需要的”,但实际项目中往往因为各......