Ext grid中日期显示为NaN-NaN-NaN 的原因及解决方法

本文详细介绍了Java和JavaScript中时间格式化的多种方法,包括使用JavaDateFormat类进行格式化,以及如何在前端通过Ext.js库进行日期格式化。同时讨论了格式化冲突和解决策略。

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

 

1.       对于时间的格式化分为两种:后台java类中对Date类的格式化;前台javascript中,对时间属性的格式化。

2.       java类中使用Java DateFormat 类 对时间格式化,具体使用方法如下:

 

import java.text.DateFormat;

import java.util.Date;

 

/**

* 格式化时间类

* DateFormat.FULL = 0

* DateFormat.DEFAULT = 2

* DateFormat.LONG = 1

* DateFormat.MEDIUM = 2

* DateFormat.SHORT = 3

* @author Michael

* @version 1.0, 2007/03/09

*/

public class TestDate {

    public static void main(String []args){

      

       /**

        * 输出当前时刻

        */

       Date d = new Date();

       String s;

      

       /** Date 类的格式: Thu Nov 03 10:29:56 CST 2011 */

       System.out.println(d);

      

      

       /** getDateInstance() */

       /** 输出格式: 2011-11-3 */

       s = DateFormat.getDateInstance().format(d);

       System.out.println(s);

      

       /** 输出格式: 2011-11-3 */

       s = DateFormat.getDateInstance(DateFormat.DEFAULT).format(d);

       System.out.println(s);     

      

       /** 输出格式: 2011-11-3 */

       s = DateFormat.getDateInstance(DateFormat.MEDIUM).format(d);

       System.out.println(s);

 

       /** 输出格式: 2011年11月3日 星期四 */

       s = DateFormat.getDateInstance(DateFormat.FULL).format(d);

       System.out.println(s);

      

       /** 输出格式: 11-11-3 */

       s = DateFormat.getDateInstance(DateFormat.SHORT).format(d);

       System.out.println(s);

      

       /** 输出格式: 2011-11-03 10:52:05 */

       java.text.DateFormat format1 = new java.text.SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

       s = format1.format(new Date());

       System.out.println(s);

      

       /** 输出格式: 2011-11-03 10:55:40 */

       System.out.println((new java.text.SimpleDateFormat("yyyy-MM-dd hh:mm:ss")).format(new

       Date()));

      

       /** 输出格式: 2011-11-03 10:55:40

        * 只有H部分大小写,其他yyyy换成YYYY时程序出错,MM,dd,mm,ss若改变大小写,将不能获得正确日期

       */

       System.out.println((new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(new

       Date()));

      

       /** 输出格式: 2011-11-03 10:55 */

       System.out.println((new java.text.SimpleDateFormat("yyyy-MM-dd hh:mm")).format(new

       Date()));

      

       /** 输出格式: 20111103105540***/

       java.text.DateFormat format2 = new java.text.SimpleDateFormat("yyyyMMddhhmmss");

       s = format2.format(new Date());

       System.out.println(s);

    }

}

 

 

运行后输出结果如下:

2011-11-3

2011年11月3日 星期四

11-11-3

2011-11-03 11:04:30

2011-11-03 11:04:30

2011-11-03 11:04:30

2011-11-03 11:04

20111103110430

 

格式化成对应格式的时间,直接在前台输出即可,不需要在前台再次格式化。

 

3.       若数据不是从后台传递过来,直接在前台脚本代码里面写的日期,则在cm中使用

renderer:Ext.util.Format.dateRenderer('Y-m-d') 格式化时间即可。

       'Y-m-d' 可以换为任何有效格式的日期字符串,就可以输出不同格式的日期时间。

 

4.       若出现日期显示为NaN-NaN-NaN,这是由于后台传过来的日期在前台使用renderer:Ext.util.Format.dateRenderer('Y-m-d')再次格式化导致,因为java类的日期格式化与javascript的日期格式化有一些冲突。

处理办法:去掉renderer:Ext.util.Format.dateRenderer('Y-m-d'),只在后台格式化即可。

 

 

 

附:Ext的日期格式说明

格式

说明

例子

d

月里面的日期,2位,不足前面补0

01-31

D

星期里面的每天的缩写

Mon - Sun

j

月里面的日期,前面不补0

1-31

l

星期的完整写法

Sunday to Saturday

N

ISO-8601的星期表示法

1=星期一,7是星期日

S

英语习惯的月内每天的2位的前缀

st, nd, rd or th.

w

星期的数字表示

0=星期日,6等星期六

Z

在年内的第几天,从0开始

0-364,闰年是365

W

ISO-8601格式的,年内的星期数,从星期一开始

01-53

F

月份的完整文字表示

January to December

m

月份的2位数字表示,不足前面补零

01-12

M

月份的缩写文字表示

Jan to Dec

n

月份的数字表示,不补零

1-12

t

月份的最大天数

28-31

L

是否为闰年

1是闰年,0则不是

o

ISO-8601的年份表示,和Y相同,但是如果星期(W)输入前一年或者后一年,则替换为那个年

1998,2004

Y

4位的年份表示

2008

y

2位的年份表示

98,08

a

小写的上下午表示

am pm

A

大写的上下午

AM PM

g

12小时制,不补零

1-12

G

24小时制,不补零

0-23

h

12小时制,2位,不足补零

01-12

H

24小时制,2位,不足补零

00-23

i

分钟,2位,不足补零

00-59

s

秒,2位,不足补零

00-59

u

毫秒,前面补零

001 999

O

Difference to Greenwich time (GMT) in hours and minutes

+1030

P

Difference to Greenwich time (GMT) with colon between hours and minutes

-08:00

T

Timezone abbreviation of the machine running the code

EST, MDT, PD

Z

Timezone offset in seconds (negative if west of UTC, positive if east)

-43200 to 50400

c

ISO 8601 date (note: milliseconds, if present, must be specified with at least 1 digit. There is no limit to how many digits the millisecond value may contain. see http://www.w3.org/TR/NOTE-datetime for more info)

2007-04-17T15:19:21+08:002008-03-16T16:18:22Z

U

Seconds since the Unix Epoch (January 1 1970 00:00:00 GMT)

1193432466 -2138434463

 

<think>好的,我现在需要帮助用户解决pandapower中遇到的ValueError,错误信息是“short circuit apparent power s_sc_max_mva needs to be specified for external grid”。首先,我需要理解这个错误的原因。根据错误提示,外部电网(external grid)的短路视在功率参数s_sc_max_mva没有指定。在pandapower中,当进行短路计算或某些需要外部电网参数的分析时,这个参数是必需的。 接下来,我应该考虑用户可能的操作场景。用户可能在创建外部电网时没有设置s_sc_max_mva参数,或者在调用某个函数(比如runpp或sc计算)时触发了这个错误。需要检查用户创建外部电网的代码,查看是否有遗漏的参数设置。 根据引用中的类似问题,比如引用[1]提到的版本问题,可能用户使用的pandapower版本存在某些要求,或者参数设置方式有变化。但更可能的是参数缺失。另外,引用[4]提到环境问题,但这里可能不适用,但需要确认用户是否正确安装了pandapower和相关依赖。 解决方案步骤可能包括: 1. 检查创建外部电网的代码,确保s_sc_max_mva和rx_max参数已正确设置。 2. 如果用户使用的是旧版本pandapower,可能需要更新到最新版,查看是否有参数要求的变化。 3. 确保调用的函数(如run_sc或runpp)是否需要其他相关参数。 4. 如果用户已经设置了s_sc_max_mva,可能需要检查拼写错误或参数位置是否正确。 此外,生成相关问题需要考虑用户可能的后续疑问,比如如何设置其他短路参数、如何验证外部电网配置、常见参数设置错误等。</think>### 解决方案:外部电网短路视在功率参数未指定的错误 在pandapower中遇到`ValueError: short circuit apparent power s_sc_max_mva needs to be specified for external grid`错误,通常是因为在定义外部电网(`ext_grid`)时未正确配置短路计算所需的参数。以下是具体解决步骤: --- #### **1. 理解错误原因** 短路计算需要外部电网提供以下参数: - **短路视在功率**($s_{sc,max}$):用`s_sc_max_mva`表示 - **短路阻抗比**($R/X$):用`rx_max`表示 若未定义这些参数,调用`run_sc`或相关函数时会触发此错误[^1]。 --- #### **2. 修改外部电网定义** 在创建外部电网时,**显式添加短路参数**: ```python import pandapower as pp net = pp.create_empty_network() # 创建外部电网时添加s_sc_max_mva和rx_max pp.create_ext_grid( net, bus=0, vm_pu=1.0, s_sc_max_mva=1000, # 根据实际电网参数填写 rx_max=0.1 # 根据实际电网参数填写 ) ``` --- #### **3. 验证参数设置** 检查现有外部电网的参数是否完整: ```python print(net.ext_grid) ``` 若输出中`s_sc_max_mva`或`rx_max`为`NaN`,则需要补充定义: ```python net.ext_grid.at[0, "s_sc_max_mva"] = 1000 # 示例值 net.ext_grid.at[0, "rx_max"] = 0.1 # 示例值 ``` --- #### **4. 更新pandapower版本** 若问题仍未解决,可能是旧版本库的限制。升级到最新版本: ```bash pip install --upgrade pandapower ``` --- #### **5. 示例:完整短路计算流程** ```python import pandapower as pp # 创建网络并定义外部电网 net = pp.create_empty_network() pp.create_bus(net, vn_kv=110) pp.create_ext_grid(net, bus=0, vm_pu=1.0, s_sc_max_mva=5000, rx_max=0.1) # 执行短路计算 pp.run_sc(net) print(net.res_bus_sc) ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值